PHP多下拉框表单提交到MySQL(第2部分)

时间:2010-02-08 16:04:43

标签: php mysql html

这是

讨论的延续

PHP Multiple Dropdown Box Form Submit To MySQL

结尾的文字是:“一旦你有变量,创建新行就很简单了。”毫无疑问,这通常是正确的,但显然不适合这个学习者... :-D

考虑以下形式:

    <form action="form.php" method="POST">
    <select name="colors[]" multiple="yes" size="2">
    <option>Red</option>
    <option>Blue</option>
    </select>
    <input type="submit" value="Go!"> 
    </form>

如何创建新行?以下脚本

foreach($_POST['colors[]'] as $color) 
    {
        $id = mysqli_real_escape_string($link, $color);
        $sql = "INSERT INTO colors SET id = '$id'";
    }

引发错误

 Warning: Invalid argument supplied for foreach() in form.php on line ...

而以下

    $colors = $_POST['colors[]']; 
    for ($i = 0; $i < count($colors); $i++) 
        {
            $color = $colors[$i];
            $sql = "INSERT INTO colors SET id = '$color'";
        }

不会引发错误,但不会创建行。

我在这里缺少什么琐事?

2 个答案:

答案 0 :(得分:2)

使用:

foreach($_POST['colors'] as $color) 

这里不需要指定[],php知道它是一个数组。

答案 1 :(得分:1)

foreach循环内部,我没有看到您正在执行查询。您需要使用INSERT声明执行mysql_query

foreach($_POST['colors'] as $color) {
 $id = mysqli_real_escape_string($link, $color);
 $sql = "INSERT INTO colors SET id = '$id'";
  if (!mysql_query($sql)) {  // if the query encountered a problem.
     die('Invalid query: ' . mysql_error());
  } 
}