我想将$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());
答案 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)
$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看看这个学习的语法。如果您只想要语法,请检查其他答案。
:)