Я работаю с php5 + и MySQL.
Я не могу понять, почему моя операция не работает:
$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->execute(array(':specific_date' => $date));
С fetchAll это дает мне ВСЕ записи с надписью в cm_name.
С другой стороны :
$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > '.$date.' ');
$prepare->execute();
Прекрасно возвращает записи с «надписью» в cm_name и с «cm_values», превосходящим $ date …
Я не могу понять, что я делаю не так?
Спасибо за вашу помощь, и простите мой английский …
Редактировать : Я использую метку времени для хранения дат, поэтому $ date является числовым.
Изменить еще раз: как сказано в комментариях, есть проблема с форматом моего параметра. Что-то вроде
$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->bindParam(':specific_date', $date, PDO::PARAM_INT);
$prepare->execute();
работает … Так что теперь я должен получить, как заставить это работать в execute () …
«:specific_date
«является строкой, и вы хотите вызвать переменную $date
, Они разные вещи, поэтому они дают разные результаты.
На самом деле,
$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->bindValue(':specific_date', $date, PDO::PARAM_INT);
$prepare->execute();
исправил все это.
Спасибо за ваши ответы, ребята.