我有一个动态输出表单,其中文本输入字段具有相同的名称。我需要循环 文本输入并在数据库中为每个文本字段输入插入多行。
$sql="INSERT INTO orderitems (orderNum,productNum,quant)
VALUES
('$num1','$_POST[pNum]','$_POST[quant]')";
<input type="text" name="pNum" value="<?php echo $t1; ?>"> //may have several with same name
答案 0 :(得分:1)
Soooo ....循环遍历它们并插入多行?
for ($i = 0; $i < count($_POST['pNum']); $i++) {
$sql = 'INSERT INTO orderitems (orderNum, productNum, quant) VALUES ('
. "'" . mysql_real_escape_string($num1) . "', "
. "'" . mysql_real_escape_string($_POST['pNum'][$i]) . "', "
. "'" . mysql_real_escape_string($_POST['quant'][$i]) . "'"
. ')';
}
请注意mysql_real_escape_string
的使用。永远不要, 从不 从$_POST
或$_GET
或$_COOKIE
或您的用户直接提供的任何其他值注入值SQL语句。除了在值包含'
时可能会中断,这也可能被恶意地用于注入改变(或删除)数据库的SQL。
答案 1 :(得分:1)
如果您要提交包含多个具有相同名称的输入的表单,则应在名称中添加[]
。然后你可以在PHP端使用它作为每个数组(即使用foreach
循环)
<input type="text" name="pNum[]" value="<?php echo addslashes($t1); ?>">
(顺便说一句,记住总是引用)
在PHP方面:
foreach($_POST['pNum'] as $value)
{
// remember about quoting here, too
}
答案 2 :(得分:0)
您可以使用INSERT请求插入许多行,您只需使用PHP创建它 http://dev.mysql.com/doc/refman/5.0/en/insert.html