0

我想在$add_rows = $_POST['add-rows']表格中插入与数字一样多的行。对于我现在的工作,我需要 32 行。我如何着手使 SQL VALUES 成为循环的一部分,以便它进入 32 行?

这是我的表格

<form>
<input name="add-name" id="add-name" type="text" value="">
<input name="add-start" id="add-start" type="text" value="">
<input name="add-end" id="add-end" type="text" value="">
<input name="add-rows" id="add-rows" type="text" value="">
<input name="add-submit" id="add-submit" type="submit" value="Add" />
</form>

以下是我将从表单中发布的值,其余值可以设置为 NULL

$add_name = $_POST['add-name'];
$add_start = $_POST['add-start'];
$add_end = $_POST['add-end'];
$add_rows = $_POST['add-rows']; //in this case, the value is 32

这是查询...我需要输入 32 个值。

mysql_query("INSERT INTO table position, name, start, end, code, one, two, three, four, five, six) 
VALUES (NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL)")
or die(mysql_error());
4

4 回答 4

1

这应该给你 32 行。

$sql = "INSERT INTO table (position, name, start, end, code, one, two, three, four, five, six) 
VALUES (NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL)"
     . str_repeat(", (NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL)", $add_rows - 1)
mysql_query($sql);
于 2013-03-12T17:02:38.960 回答
0

你可以试试这个

mysql_query("INSERT INTO table position, name, start, end, code, one, two, three, four, five, six) 
VALUES (NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(NULL, '$add_name', '$add_start', '$add_end', NULL, NULL, NULL, NULL, NULL, NULL, NULL)")
or die(mysql_error());

这里只有 4 行,但你不能做 32 行。

您也可以在循环中构造请求(设置不同的变量值)不要忘记每个值之间的逗号(但最后一行末尾没有逗号)。

于 2013-03-12T17:03:10.317 回答
0

PDO准备好的语句一起使用:

$dbh = new PDO('mysql:host=localhost;dbname=example', $user, $pass);
$stmt = $dbh->prepare("INSERT INTO table (position, name, start, end, code, one, two, three, four, five, six) VALUES (NULL, :add_name, :add_start, :add_end, NULL, NULL, NULL, NULL, NULL, NULL, NULL)");
$stmt->bindParam(':add_name', $add_name);
$stmt->bindParam(':add_start', $add_start);
$stmt->bindParam(':add_end', $add_end);

for ($i = 0; $i < $add_rows; $i++) {
    $stmt->execute();
}

这还有一个额外的好处,那就是强化您的查询以抵御 SQL 注入攻击。您的问题和其他答案(在撰写本文时)直接在查询中使用未转义的 $_POST 值。

于 2013-03-12T17:04:38.893 回答
0

列名需要在括号之间。我认为您需要查看语法:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

我认为这是一个问答网站,而不是给我这个语法网站。@Azukah 看看这个学习语法。如果您只想要语法,请检查其他答案。

:)

于 2013-03-12T17:11:30.340 回答