2013-03-04 90 views
0

所以,我有我已經序列化的自定義PHP對象,我試圖將其插入到一個MySQL數據庫和PHP 代碼:MySQL錯誤1064同時插入序列化對象

$serializedOrder = serialize($objectOrder); 

//I have tried both of these, and all combinations of them 
$serializedOrder = mysql_real_escape_string($serializedOrder); 
$serializedOrder = stripslashes($serializedOrder); 

$result = mysql_query("INSERT INTO orders(order) VALUES('".$serializedOrder."')"); 
if ($result == false) { 
    echo "mysql_query failed "; 
    echo mysql_error(); 
    echo " "; 
    echo mysql_errno(); 
} 

這將產生的回覆:

mysql_query失敗您的SQL語法有錯誤; ('O:10:「OrderClass」:6:{s:9:「foodArray」; a:0:{} s:)檢查與您的MySQL服務器版本相對應的手冊, 8: 「baseTime」; I:0; S:1' 位於第1行1064

總連續字符串是:

○:10: 「OrderClass」:6:{S:9: 「foodArray」 ;一個:0:{} S:8: 「baseTime」; I:0; S:11: 「ORDERNUMBER」; I:0; S:11: 「truckNumber」; I:0; S:10: 「的customerID」 ; I:0; S:11: 「orderStatus」; S:0: 「」;}

任何幫助理解

+4

'ORDER'是[MySQL的保留關鍵字(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html),並且必須與引用它反引號將其用作列標識符。 – 2013-03-04 00:50:46

+0

不要在'mysql_real_escape_string()'之後調用'stripslashes()'!您正在使用'mysql_real_escape_string()'完成轉義。 – 2013-03-04 00:52:31

+0

這裏需要特別注意的是,所有的mysql_ *函數都被棄用,並且很快就會被刪除,所以如果PHP在服務器上得到更新,您的腳本將不再工作。您將在php.net中看到此消息:此擴展在PHP 5.5.0以前不推薦使用,並且將來會被刪除。相反,應該使用MySQLi或PDO_MySQL擴展。另請參閱MySQL:選擇API指南和相關FAQ以獲取更多信息。這個功能的替代方案包括: – thatthatisis 2013-03-04 00:58:00

回答