【问题标题】:execute foreach loop in PDO query在 PDO 查询中执行 foreach 循环
【发布时间】:2016-06-29 23:34:13
【问题描述】:

我正在尝试使用 PDO 将序列化表单数据存储到 mysql 中。 DB表列名、字段名一切都是动态的。

update.php

$data = $_POST['data'];
parse_str($_POST['data'], $searcharray);
foreach($searcharray['column_name'] as $key=>$value) {
        echo $value;
    }
foreach($searcharray['data_name'] as $k=>$v) {
        echo $v;
    }

下面的 foreach 循环返回 colname_1colname_2colname_3(不带逗号)

foreach($searcharray['column_name'] as $key=>$value) {
            echo $value;
        }

另一个 foreach 循环返回 biketvssuzuki(不带逗号)

foreach($searcharray['data_name'] as $k=>$v) {
            echo $v;
        }

我想更新 colname_1 中的 bikecolname_2 中的 tvssuzuki > 在 colname_2 中。如何在 PDO 查询中执行上述两个 foreach 循环?

try
        {
            $update_query = $dbh->prepare("UPDATE ".REQUIREMENTS_DB." SET colname_1 = ?, colname_2 = ?, colname_3 = ? WHERE id = :id");
            $update_query->bindParam(':id', $id);
            $update_query->execute();

            echo "Updated Successfully";
        }
        catch (PDOException $e) 
        {
            die('Error ' . $e->getMessage());
        }

【问题讨论】:

  • 你能举一个post数据进来的例子吗?当字符串作为 POST[] 变量传入时,为什么要将其解析为变量?

标签: php mysql pdo foreach


【解决方案1】:

您正在寻找这样的东西吗?

$sql = "UPDATE ".REQUIREMENTS_DB." SET ";
for ($i = 0; $i < count($searcharray['column_name']); $i++) {
    $sql .= $searcharray['column_name'][$i]." = ".$searcharray['data_name'][$i];
    if ($i < (count($searcharray['column_name'])-1)) $sql .= ", "
}
$sql .= "WHERE id = :id";

$update_query = $dbh->prepare($sql);
...

这是非常基本的代码,可以/应该改进很多。

【讨论】:

  • 显示更新成功。但是,表中没有更新
  • print_r 或 var_dump 在准备语句之前将$sql 变量。
猜你喜欢
  • 1970-01-01
  • 2015-07-23
  • 2015-10-09
  • 2014-12-01
  • 2017-02-03
  • 2019-03-02
  • 2019-05-26
  • 2014-02-06
  • 1970-01-01
相关资源
最近更新 更多