帮助 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 循环的主要内容,如果未能解决你的问题,请参考以下文章

PHP / MYSQL 插入数组 Foreach 循环

php 如何退出foreach 循环

php foreach怎样获取当前的循环次数

PHP中使用foreach循环读取数组数据的方法

关于PHP中foreach循环修改数组值失效的问题

PHP中使用foreach循环读取数组数据的方法