По-моему, должен работать следующий скрипт:
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = ?");
$stmt->execute(array(1, 'NOW()'));
, но при передаче NOW()
в подготовленное утверждение ничего не происходит.Замена NOW()
фактической датой (т.е. 2010-11-23) работает просто отлично.
Я не могу найти объяснение в Интернете.Любые идеи?
РЕДАКТИРОВАТЬ
Просто чтобы прояснить и избавиться от путаницы в вопросе, я хочу на самом деле передать переменную в подготовленный оператор ОДНАКО, переменная будет установлена на один изпять возможных функций даты / времени для mysql.
например,
$ var = 'NOW ()';
$ var = 'LAST_DAY (DATE_ADD (CURDATE (), ИНТЕРВАЛ 1 МЕСЯЦ))';
$ var = 'LAST_DAY (CURDATE ())';
... и т. Д. *
подготовленный оператор превращается в:
$stmt->execute(array(1, $var));
Я знаю, что это вернет те же результаты NULL, но я волнуюсь, если я просто изменю выражение sql на:
Таблица обновлений SET status =?, Date_modified = $ var
Я открываюсь для инъекции?