функция выполнения PDO ограничена для принятия аргументов? - PullRequest
2 голосов
/ 17 марта 2011

У меня есть рабочий класс интегрированной базы данных pdo.Все мои запросы работают очень эффективно, но когда я пытаюсь передать определенное значение, я застреваю.Это значение:

DATE_SUB('2010-11-03', INTERVAL 30 DAY)

Теперь, после того, как все мои запросы к классу подготовлены следующим образом:

SELECT DATE(added) AS date FROM data WHERE DATE(added) <= ?

Когда я пытаюсь передать значение: DATE_SUB('2010-11-03', INETRVAL 30 DAY) в execute() функцию, результат не получен (но запрос успешно выполняется).

Я попытался отправить необработанное значение '2010-11-03'.Работает правильно, но не работает с этой функцией.Кто-нибудь знает, что эта функция mysql не передается для выполнения функции?

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Нельзя использовать заполнители в качестве замены этой части моего SQL-запроса : заполнители и соответствующие им связанные значения могут соответствовать только значениям.

Когда вы передаете 2010-11-03, вы передаете значение - так оно и работает.

Когда вы пытаетесь передать DATE_SUB('2010-11-03', INTERVAL 30 DAY), это не значение - поэтому оно не работает.


Здесь вам придется переписать ваше подготовленное утверждение, чтобы заполнитель соответствовал дате, а не целому выражению:

SELECT DATE(added) AS date 
FROM data 
WHERE DATE(added) <= DATE_SUB(?, INTERVAL 30 DAY)

(30 также может быть заменен заполнителем, если необходимо)

1 голос
/ 17 марта 2011
SELECT DATE(added) AS date 
  FROM data 
 WHERE DATE(added) <= DATE_SUB(?, INTERVAL ? DAY)

и обрабатывать дату и интервал как значения связывания

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