Подготовленный оператор PDO не обновляет таблицу - PullRequest
0 голосов
/ 28 июня 2010

Я разрабатываю ORM на основе PDO для таблиц, которые не имеют уникальных полей идентификатора, поэтому при обновлении или удалении мне нужно сравнить с предыдущими значениями записи и LIMIT 1.

Когда мой запрос, наконец, попадает в базу данных и выполняется с параметрами, все правильно, что подтверждается общим журналом запросов, однако, ничего не происходит .

Я получаюисключений нет (PDO::ERRMODE_EXCEPTION включено), и проверка $stmt->errorInfo() возвращается чистой, но $stmt->rowCount() возвращает 0.

В качестве проверки работоспособности я открыл файл журнала, скопировал и вставилUPDATE запрос прямо в Sequel Pro (OSX MySQL GUI) и выполнен, и все работало, как ожидалось, обновляя 1 строку.

Почему PDO не обновляет строку, когда вручную выполняет IDENTICAL запрос делает?

1 Ответ

2 голосов
/ 28 июня 2010

Проблема заключалась в том, что мой код сгенерировал запрос, используя

WHERE `FieldName` = NULL

, когда он должен был быть

WHERE `FieldName` IS NULL

При выполнении PDO он сохранил = NULL, не вызываязаписи, которые должны быть сопоставлены, но когда MySQL зарегистрировал это, он зарегистрировал IS NULL, поэтому, когда я копировал / вставлял, запрос был правильным и обновлял строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...