PDO подготовить Вставить сериализовать ошибку данных - PullRequest
1 голос
/ 09 октября 2010

Я пытаюсь вставить сериализованные данные в 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)

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

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

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

Ответы [ 2 ]

2 голосов
/ 09 октября 2010

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

Полный список зарезервированных слов для MySQL можно найти на их веб-странице здесь и здесь .

0 голосов
/ 09 октября 2010

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

$stmt->bindParam(':condition',$condition,PDO::PARAM_STR);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...