php mysql用1个查询插入X行多行

时间:2013-03-12 16:54:00

标签: php mysql

我想将$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 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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行。

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

答案 2 :(得分:0)

使用PDOprepared statement

$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值。

答案 3 :(得分:0)

列名称必须在括号之间。我想你需要看到语法:

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

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

:)