2016-10-20 5 views
0

я использую подготовленное заявление для избранных на период таблице:связывают параметры не работает с датами

$query_period = $mysqli->prepare("SELECT * FROM period WHERE date_start<= '?' AND date_end >='?'"); 
$query_period->bind_param('ss',$date_start,$date_end); 

и исполнение дает ошибку номер параметра:

Предупреждение: mysqli_stmt :: bind_param(): Количество переменных не соответствует числа параметров в подготовленном заявлении

ошибка не происходит, когда я удалить "вокруг, как это:

$query_period = $mysqli->prepare("SELECT * FROM period WHERE date_start<= ? AND date_end >=?"); 

, но и запрос не соответствует правильному результату. как я могу это сделать?

, потому что если идти, как это:

$query_period = $mysqli->query("SELECT * FROM period WHERE date_start<= '$date_start' AND date_end >='$date_end'"); 

все это работает прекрасно

ответ

0

параметров Bind работает с датами.

Существует абсолютно без разницы между запросом с заполнителем и запросом с фактическим значением. Ни для даты, ни для любого другого типа данных.

Следовательно, ваша проблема исходит из любого другого направления. Входные данные, данные в базе данных - вы знаете. Чем раньше вы поймете это и перестанете лаять неправильное дерево, тем скорее вы сможете решить свою проблему.

+0

Я знаю, что не должно быть разницы. но я не понимаю, как проблема может быть в самих данных. Я не выполняю запрос, когда ошибка связана с привязкой ... Другая проблема заключается в том, что я лаял больше одного дерева, но без каких-либо хороших результатов. – Romeo

+0

Вы знаете, это происходит со всеми нами. Иногда наш код не работает. Ваша задача - отладить его и найти причину. Но вы можете быть уверены, что подготовленное заявление не одно. Таким образом, это помогает вам сузить возможности. –

+0

Подождите. вы сказали ошибку на привязке? ** Таким образом, вы все еще используете эту версию с кавычками?! ** –