这是
讨论的延续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'";
}
不会引发错误,但不会创建行。
我在这里缺少什么琐事?
答案 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());
}
}