2010-10-09 48 views
1

我想使用PDO將序列化數據插入到mySQL中,並且遇到一些語法錯誤。我錯過了什麼嗎?PDO準備插入序列化數據錯誤

有些簡化的編碼:

$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(:條件)PARAMS:1項: 名稱:[10]:條件paramno = -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 )

回答

2

解決方案其實很簡單。 Condition是MySQL中的保留字。您不能將其用作列的名稱。

你可以在他們的網頁herehere找到MySQL的保留字的完整列表。

0

當你將它定義爲字符串時會發生什麼?

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

它給出了完全相同的錯誤信息 – SteD 2010-10-09 17:35:16