帮助 php FOREACH 循环
Posted
技术标签:
【中文标题】帮助 php FOREACH 循环【英文标题】:help with php FOREACH loop 【发布时间】:2010-12-06 14:08:56 【问题描述】:请告诉我下面的 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());
我不断收到警告:invalid argument suplied foreach() in .... 当我上传到服务器时
谢谢
【问题讨论】:
请贴出$_POST['sortlist']数组的内容(如果真的是数组) 【参考方案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());
【讨论】:
【参考方案2】:$_POST['sortlist']
可能不是数组。试试print_r($_POST)
看看你有什么。
【讨论】:
【参考方案3】:尝试将$_POST[sortlist]
更改为$_POST['sortlist']
【讨论】:
【参考方案4】:出于对互联网的热爱,请不要自己构建 SQL 查询。使用PDO。
【讨论】:
【参考方案5】:提示:错误消息指的是 foreach 行。这只从一个变量 $_POST[sortlist] 中读取,该变量在循环内没有被修改。所以你可以忽略所有的 SQL 东西;它与您的问题无关。将问题减少到仍然有错误的尽可能小的代码段。这将帮助您解决它。
【讨论】:
【参考方案6】:不要使用 mysql_query
,它非常不安全并且已被弃用。
开始使用mysqli_query
,虽然不如PDO
安全,但会好很多。
【讨论】:
以上是关于帮助 php FOREACH 循环的主要内容,如果未能解决你的问题,请参考以下文章