循环通过表单输入数组

时间:2010-10-13 13:00:52

标签: php mysql

我有一个动态输出表单,其中文本输入字段具有相同的名称。我需要循环 文本输入并在数据库中为每个文本字段输入插入多行。

$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

3 个答案:

答案 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