【问题标题】:help with php FOREACH loop帮助 php FOREACH 循环
【发布时间】: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']数组的内容(如果真的是数组)

标签: php mysql foreach


【解决方案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安全,但会好很多。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多