PDO准备插入序列化数据错误

时间:2010-10-09 17:19:04

标签: php pdo serialization

我正在尝试使用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]:条件paramno = -1   name = [10]“:condition”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行   )

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

当您将其明确定义为字符串时会发生什么?

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