2010-10-09 6 views
1

Я пытаюсь вставить сериализуемые данные в mySQL с использованием PDO, и я нахожу ошибку синтаксиса. Я что-то пропустил?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) 

ЗНАЧЕНИЯ(): состояние Params: 1 Ключ: Имя: [10]: условие paramno = -1 имя = [10] ": условие" is_param = 1 param_type = 2

print_r($stmt->errorInfo()) показывает

Array ([0] => 42000 [1] => 1064 [2] => У вас есть ошибка в вашем SQL синтаксиса; проверьте, что соответствует вашему серверу MySQL для правильного синтаксиса для использования вблизи 'условия) VALUES (' a: 1: {i: 1; s: 3: \ "one \";} ')' на линии 1 )

ответ

2

Решение на самом деле очень просто. Condition зарезервированное слово в MySQL. Вы не можете использовать его как имя своего столбца.

Вы можете найти полный список зарезервированных слов для MySQL на своей странице here и here.

0

Что происходит, когда вы определяете его как строку конкретно?

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

Он дает точно такое же сообщение об ошибке – SteD

Смежные вопросы