我正在建立一个人们可以下订单的网站,这是我第一次不得不一次插入多行而且我迷路了。我知道我需要一个FOR循环来执行此操作,但我对如何构造循环感到很遗憾。我正在使用PHP,MySQL(很明显)和jQuery。我正在使用jQuery将.append()一个新的选择框放入表单中,以允许客户选择另一个项目。
这就是我通常构造代码以允许用户插入数据库的方法。我的问题是如何以及在何处插入一个循环,这样就可以一次性提交多个行,而无需逐个插入。什么都有帮助,谢谢。
<?php
if (isset($_POST['submit'])) {
if (!$_POST['col1'] | !$_POST['col2'] | !$_POST['col3']) { die ("error"); }
if (!get_magic_quotes_gpc()) {
$_POST['col1'] = addslashes ($_POST['col1']);
$_POST['col2'] = addslashes ($_POST['col2']);
$_POST['col3'] = addslashes ($_POST['col3']);
}
$insert = "insert into table (col1, col2, col3) values ('".$_POST['col1']."', '".$_POST['col2']."', '".$_POST['col3']."')";
mysql_query ($insert);
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<table>
<tr>
<td><input type="text" name="col1"></td>
<td><input type="text" name="col2"></td>
<td><input type="text" name="col3"></td>
//I'm using jQuery .append() to insert more text boxes with names (col1, col2, col3) here
</tr>
</table>
<input type="submit" name="submit" value="Submit">
</form>
<?php
}
?>
我的困惑在于放置循环......我知道它应该是一个FOR循环,但我永远无法让它工作。再次感谢您的帮助。
答案 0 :(得分:2)
确保您唯一地命名您的输入。但是你可以像这样命名每一列(例如见here):
<input type="text" name="column1[]" />
<input type="text" name="column2[]" />
<input type="text" name="column3[]" />
通过这种方式,您可以使用for循环通过PHP访问列。
for($i = 0; $i < $n; $i++) // If you have $n rows
{
echo($_POST["column1"][$i]);
echo($_POST["column2"][$i]);
echo($_POST["column3"][$i]);
}
要在mySQL数据库中插入多行,请使用以下语法(另请参阅:here)。
INSERT INTO
tbl_name (column1, column2, column3)
VALUES
(1,2,3),
(4,5,6),
(7,8,9);
现在您应该设置构建SQL查询。
答案 1 :(得分:0)
您要避免的第一件事是使用相同的名称。您可能希望将它们命名为rowNcolM,然后在检查发布变量的位置提取它们。