有些人可以告诉我下面的foreach php循环有什么问题。
foreach ($_POST[sortlist] as $key => $value)
{
$sql = "UPDATE sortable
SET color_order = " . mysql_real_escape_string($key) . "
WHERE id = " . mysql_real_escape_string($value);
$result = mysql_query($sql) or die(mysql_error());
}
我一直收到警告:无效的参数提供了foreach().... 当我上传到服务器
由于
答案 0 :(得分:4)
$_POST['sortlist']
可能不是数组。试试print_r($_POST)
看看你有什么。
答案 1 :(得分:3)
尝试将$_POST[sortlist]
更改为$_POST['sortlist']
答案 2 :(得分:1)
我假设$ _POST [sortlist]不是数组。这可能就是你想要做的事情:
foreach ($_POST as $varname => $varvalue) {
$sql = "update sortable set color_order = ".mysql_real_escape_string($varname)." where id = ".mysql_real_escape_string($varvalue);
$result = mysql_query($sql) or die(mysql_error());
}
或者如果$ _POST ['sortlist']是一个数组,请尝试:
foreach ($_POST['sortlist'] as $varname => $varvalue) {
$sql = "update sortable set color_order = ".mysql_real_escape_string($varname)." where id = ".mysql_real_escape_string($varvalue);
$result = mysql_query($sql) or die(mysql_error());
}
答案 3 :(得分:0)
提示:错误消息指的是foreach行。这只能读取一个变量$ _POST [sortlist],它不会在循环内修改。所以你可以忽略所有SQL的东西;这与你的问题无关。将问题减少到仍然存在错误的最小可能代码段。这将有助于你解决它。
答案 4 :(得分:0)
不要使用mysql_query
,它非常不安全,不推荐使用。
开始使用mysqli_query
,不如PDO
安全,但会更好。
答案 5 :(得分:-1)
为了热爱互联网,请不要自己构建SQL查询。使用PDO。