Foreach循环无法正常工作
我有这段代码,它并没有在数据库中插入值。我究竟做错了什么?Foreach循环无法正常工作
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">
我到底做错了什么?
如果我没有记错的话,一个未经检查的值根本不会传递给$ _POST。所以你可以剥掉检查$值的行。我想你可能会遇到不同的浏览器发送不同值的问题。所以试试这个:
foreach($cat as $key => $value)
{
//$sql = "";
$sql = sprintf("INSERT INTO cat VALUES('','$user_id','%s');",$value);
mysql_query($sql);
}
非常感谢,这工作!我之前使用了确切的代码,然后它正在工作,所以我不知道是什么导致了这个问题。无论如何它工作,所以谢谢! – Andre 2012-02-20 15:41:50
不客气!这是我注意到的一个新问题,最近完全破坏了我的几个网站,所以我感到你的痛苦。 – 2012-02-20 15:56:36
你在哪里将$ _REQUEST ['cat']/$ _ GET ['cat']/$ _ POST ['cat']转换为$ cat ...你似乎在循环一个名为$ cat的数组,但我认为你习惯于使用register_globals,而你的服务器不再支持它。这就是为什么它没有达到你的期望。
但我可能是错的...
你应该记录你的sql语句并记录任何mysql_error()。
而且你的阵列将是一个常规的索引基于阵列的,所以你应该使用(虽然这可能不是你的错误的来源)
foreach($cat as $value)
的foreach看起来更好这样一来,如果你不使用钥匙..但没关系。 – 2012-02-20 15:40:19
注意如果复选框没有被选中,它根本不会提交。 – 2012-02-20 15:34:51
man,做一些调试......'print_r($ _ POST ['cat']);'。 'echo $ sql;'检查'mysql_query'调用的返回值。我认为这回答你的问题。 – 2012-02-20 15:35:16
你不'mysql_real_escape_string()''你$ user_id'和你的'$ value' - 这是很糟糕... – glglgl 2012-02-20 15:41:35