Я пытаю следующее:PHP PDO заявление: кавычки в кавычках вызывают запрос на неудачу
$stmt = $db->prepare("SELECT * FROM table WHERE date
BETWEEN :year-:month-01 AND :year-:month-01 +
INTERVAL 1 MONTH");
$stmt->bindValue(':year', $year, PDO::PARAM_STR);
$stmt->bindValue(':month', $_POST["month"], PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
Когда $year
равна 2015 и $_POST["month"]
равен 06, то запрос должен давать результаты, но это не делает. Я мог бы сделать $year
a PDO::PARAM_INT
, но это все равно оставляет меня с $_POST["month"]
, который является строкой (01 .. 12).
Однако при тестировании с этой небольшой корректировки, удаление привязок ...
BETWEEN "2015-06-01" AND "2015-06-01" +
INTERVAL 1 MONTH");
Запрос преуспевает и результаты показывают. Я думаю, что это происходит потому, что между-датами, которые сервер получает выглядеть следующим образом:
'2015'-'06'-01
Итак, мой вопрос заключается в следующем:
Как «побег» или «удалить» кавычки внутри PDO подготовленные заявления? Должен быть элегантный способ решить эту проблему.
Edit, для записи: я забыл добавить кавычки в моей 'настройки'. Оба экземпляра 2015-06-01 должны быть в кавычках. Я соответствующим образом отредактировал свой вопрос. – Dave