Код: Выделить всё
$pdo = new PDO($dsn, $user, $password);
- Когда я запускаю запрос без связанных переменных, он отправляет ожидаемый запрос в базу данных и сохраняет поддельную дату в таблице:
Код: Выделить всё
$pdo->prepare("INSERT INTO table (ts) VALUES (NOW());")->execute();
// LOG: execute pdo_stmt: INSERT INTO table (ts) VALUES (NOW());
- Когда я пытаюсь связать значение с помощью bindParam илиbindValue, оно отправляет временную метку в качестве привязанной значение:
Код: Выделить всё
$sql = $pdo->prepare("INSERT INTO table (ts) VALUES (:now);");
$now = 'NOW()';
$sql->bindValue(':now', $now);
$sql->execute();
// LOG: execute pdo_stmt: INSERT INTO table (ts) VALUES ($1);
// DETAIL: Parameters: $1 = '2024-10-15 16:43:27.437313+00'
- Благодаря отзывам Айнбера мне удалось воссоздать поведение с помощью строки, что заставляет меня думать, что это может быть связано с SQL:< /li>
Код: Выделить всё
$pdo->prepare("INSERT INTO table (ts) VALUES ('NOW())';")->execute();
// LOG: execute pdo_stmt: INSERT INTO table (ts) VALUES ('NOW()');
// Table stores '2024-10-15 17:47:44.796556+00'
Мой вопрос: есть ли способ использовать функцию NOW() в подготовленном операторе, чтобы она работала как случай № 1, а не как в других случаях, когда это привязка текущей метки времени или строки (которая оценивается как текущая метка времени)?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -timestamp