【问题标题】:Execute unique query after foreach loop php在foreach循环php之后执行唯一查询
【发布时间】:2014-12-01 12:43:51
【问题描述】:

我必须使用来自数组变量大小的值来更新 mysql 表。 为此,我正在做这样的事情,但是这段代码执行许多查询作为数组上的项目数,并且很难管理错误。 我如何只能执行一个查询但仍使用 foreach 循环? 服务器的 php 版本太旧了,不支持 mysql_query 以外的任何东西。

foreach($decoded_array as $key=>$value)
                      {
                            if(!is_numeric($value))
                            {
                            $value = "'".$value."'";
                            }

                            echo $sql ="UPDATE table SET ".$key." = ".$value.";     
                            $res = mysql_query($sql);

                      }     

【问题讨论】:

标签: php loops foreach


【解决方案1】:
echo $sql ="UPDATE table SET ".$key." = ".$value.";

把这个改成这个

$sql ="UPDATE table SET '".$key."' = '".$value."';

还有这个

$value = "'".$value."'";

到这里

$value = '".$value."';

还有人认为 mysql_ 功能被削弱了。

使用mysqli_函数或PDO

对于 mysqli_ 函数,请查看此链接 http://php.net/manual/en/book.mysqli.php

对于 PDO,请查看此链接 http://php.net/manual/en/book.pdo.php

【讨论】:

  • 但这并不能解决问题,因为我说过服务器不支持 mysql_query 以外的任何东西。谢谢
  • 然后创建一个.sql文件并从命令行导入到db。
  • @cheery 抱歉,这是一个令人毛骨悚然的解决方案。
  • @im7xs 然后你继续循环。您期望得到什么答案? mysql_ 不支持一次请求多个查询。
  • @im7xs 你没有把问题解释清楚。根据您的代码 - 您希望数组的每个元素在 db 中单独记录。但是,如果您说每个元素都对应于 db 中的列 - 就不会有这么长的讨论了。
【解决方案2】:
$set = "";
foreach($decoded_array as $key=>$value)
    $set .= ($set ? "," : "") . $key . "=" . (is_numeric($value) ? $value : "'".$value."'");
$sql = "UPDATE table SET " . $set;
$res = mysql_query($sql);

但我不确定使用 "'".$value."'" 是否安全。我更喜欢mysqli函数escape_string。

【讨论】:

    猜你喜欢
    • 2016-06-29
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2023-03-29
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多