Невозможно установить текущую _timestamp или now () с PDO на MySQL - PullRequest
1 голос
/ 14 октября 2009

Я использую подготовленные операторы PDO в веб-приложении, которое я создаю. У меня в качестве значения по умолчанию для столбца отметки времени установлено значение current_timestamp.

Использование метки времени обычно назначает текущую метку времени, когда значение столбца равно нулю, так же, как теперь (). Но что бы я ни пытался, я получаю значение NULL, если для столбца отметки времени установлено значение null, а для 00:00:00 - 00:00:00, если я использую now (). Использование обычных запросов прекрасно работает.

Я отправляю свои параметры в виде ассоциативного массива, затем использую foreach с bindValue в PDOStatement. Это всегда работало отлично до этой проблемы. Я пробовал debugDumpParams, но он довольно резко падает. Кажется, это известная ошибка в 5.2.6, и Ubuntu еще не обновил пакет. Я бы предпочел избежать проблемы обхода aptitude и установки php из исходного кода, поскольку я даже не уверен, поможет ли debugDumpParams ...

Ответы [ 2 ]

5 голосов
/ 25 апреля 2014

Все еще проблема 5 лет спустя ...

Другое решение, если вы не хотите выполнять SQL-запрос, это напрямую установить значение в PHP следующим образом:

3 голосов
/ 14 октября 2009

Похоже, ваша проблема в том, что вы пытаетесь использовать функцию MySQL в качестве значения параметра в подготовленном запросе. Это терпит неудачу, потому что процесс подготовки запроса превратит его в литерал для оператора SQL, включая такие вещи, как цитирование строк, а это не то, что вам нужно Поэтому для установки поля в NOW() сделайте присваивание в самом запросе, прежде чем подготовить его, а не в любом из параметров.

С другой стороны, использование нулевого значения параметра должно работать. Но ясно, что это не так, что может быть ошибкой, которую вы упомянули. Опять же, решение заключается в том, чтобы сделать это непосредственно в SQL. Вы все еще можете использовать параметры для других полей.

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