【发布时间】:2016-04-07 20:45:09
【问题描述】:
我创建了以下复选框表单来显示爱好。该数组在同一个单元格中进入数据库,这是完美的,但是,在我提交之前,页面上出现了以下错误。 (我是新手,任何帮助将不胜感激:))
未定义索引:爱好在(第 29 行) 警告:implode():传入的参数无效(第 29 行)
代码:
$checkbox=implode(',', $_POST['hobbies']);
if(isset($_POST['Submit'])){
//for($i=0; $i<sizeof($hobbies);$i++){
$query=queryMysql("INSERT INTO hobbies VALUES ('$user', '" .$checkbox. "')");
mysql_query($query) or die(mysql_error());
echo "record is inserted";
}
echo <<<_END
<body>
<form method='post' action='hobbies.php' >
<input type="checkbox" name="hobbies[]" value="reading">Reading<br>
<input type="checkbox" name="hobbies[]" value="cycling">Cycling<br>
<input type="checkbox" name="hobbies[]" value="swimming">Swimming<br>
<input type="checkbox" name="hobbies[]" value="running">Running<br>
<input type="submit" name='Submit' value='Submit'/></form>
</body>
</html>
_END;
?>
【问题讨论】:
-
最初加载页面时,没有
$_POST['hobbies']这样的变量,所以把它放到你的if语句中。 -
这个问题已经在下面得到了回答,所以附带说明一下:你不会让陌生人进入你的房子,但你似乎可以让他们进入你的数据库。 “是的,伙计们,提供你想要的任何东西!如果你的名字恰好是
blahblah' OR 1/*,那就这样吧!” -
将此行
$checkbox=implode(',', $_POST['hobbies']);放入if条件中。 -
你应该看看数组的序列化,而不是用逗号连接值(你必须添加转义,顺便说一句)。