Foreach循环无法正常工作

时间:2012-02-20 15:31:25

标签: php mysql

我有这个代码,它不会在数据库中插入值。我做错了什么?

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">

我做错了什么?

4 个答案:

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