我有这个代码,它不会在数据库中插入值。我做错了什么?
while ($rij = mysql_fetch_assoc($doquery2))
{
$user_id = $rij['id'];
}
$cat = $_POST['cat'];
foreach($cat as $key => $value)
{
//$sql = "";
if ($value > 0)
{
$sql = sprintf("INSERT INTO cat VALUES('','$user_id','%s');",$value);
mysql_query($sql);
}
}
在我的表单中,每个复选框的构建如下:
<input type="checkbox" name="cat[]" value="Lifestyle">
我做错了什么?
答案 0 :(得分:2)
如果我没记错的话,未经检查的值根本不会传递给$ _POST。所以你可以删除检查$ value的行。我想你可能会遇到问题,不同的浏览器为复选框发送不同的值。所以试试这个:
foreach($cat as $key => $value)
{
//$sql = "";
$sql = sprintf("INSERT INTO cat VALUES('','$user_id','%s');",$value);
mysql_query($sql);
}
答案 1 :(得分:1)
您应该记录您的sql语句并记录任何mysql_error()。
此外,您的数组将是一个基于索引的常规数组,因此您应该使用(尽管这可能不是您的错误来源)
foreach($cat as $value)
答案 2 :(得分:0)
你将$ _REQUEST [&#39; cat&#39;] / $ _ GET [&#39; cat&#39;] / $ _ POST [&#39; cat&#39;]转换为$ cat ..你似乎在一个名为$ cat的数组上循环,但我认为你习惯于使用register_globals而你的服务器不再支持它了。这就是为什么它没有按照你的期望做的。
但我可能错了......
答案 3 :(得分:0)
您忘记了此处不需要包含表格列;
$sql = sprintf("INSERT INTO cat (id, user,category) VALUES('','$user_id','%s')",$value);