【问题标题】:PDO prepare Insert serialize data errorPDO准备插入序列化数据错误
【发布时间】:2010-10-10 02:34:34
【问题描述】:

我正在尝试使用 PDO 将序列化数据插入 mySQL,但遇到了一些语法错误。我错过了什么吗?

一些简化的编码:

$test['1'] = "one";
$condition = serialize($test);
$stmt = $dbh->prepare("INSERT INTO weather(condition) VALUES (:condition)");
$stmt->bindParam(":condition",$condition);
$stmt->execute();

$stmt->debugDumpParams() 显示

SQL: [67] INSERT INTO weather(condition)

VALUES (:condition) 参数:1 键: 名称:[10]:条件参数=-1 名称=[10] ":条件" is_param=1 param_type=2

print_r($stmt->errorInfo()) 显示

数组 ([0] => 42000 [1] => 1064 [2] => 你的 SQL 语法有错误;检查手册 对应你的 MySQL 服务器 使用正确语法的版本 近'条件)值 ('a:1:{i:1;s:3:\"one\";}')' 在第 1 行 )

【问题讨论】:

    标签: php pdo serialization


    【解决方案1】:

    解决方案其实很简单。 Condition 是 MySQL 中的保留字。您不能将其用作列名。

    您可以在他们的网页 herehere 上找到 MySQL 保留字的完整列表。

    【讨论】:

      【解决方案2】:

      当你专门将它定义为字符串时会发生什么?

      $stmt->bindParam(':condition',$condition,PDO::PARAM_STR);

      【讨论】:

        猜你喜欢
        • 2012-04-24
        • 2016-11-29
        • 2014-11-23
        • 2013-09-21
        • 2015-03-13
        • 2013-11-05
        • 1970-01-01
        • 2017-09-19
        • 1970-01-01
        相关资源
        最近更新 更多