2017-02-22 72 views
1

Я построил динамический поиск с использованием PHP & MySQL. Все работает нормально, и код может одновременно искать несколько значений.Динамический поиск PHP и MYSQL с несколькими полями не имеет диапазона дат

$query=""; 
$query .=" select * from customers where 1 "; 

if(strlen($adv_s_city)>0){ 
    $query .=" and city = '$adv_s_city' "; 
}    
if(strlen($adv_s_personalIdType)>0) 
{    
    $query .=" and pesonal_identity_type = '$adv_s_personalIdType' "; 
} 
if(strlen(isset($_POST['adv_s_gender'])) > 0) 
{     
    $query .=" and gender = '$adv_s_gender' "; 
} 

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

if(strlen($adv_s_FromDate)>0 && strlen($adv_s_ToDate)>0) 
{ 
    $query .=" and (date between '$adv_s_FromDate' and '$adv_s_ToDate') "; 
} 
+1

положить 'echo $ query' наконец и проверить ваш запрос, это поможет вам отладить. –

+0

Это может показаться сумасшедшим, но этот простой запрос echo $ дал мне достаточно информации о том, что я делаю и запрашиваю, и я мог бы решить проблему. Огромное спасибо :) –

+0

А теперь посмотрите на sql-инъекции и параметризованные запросы – Strawberry

ответ

0

Тип запроса, который генерирует ваш код, отлично работает для меня. Я использую mysql версии 5.7.13. Возможно, ошибка в коде, который генерирует запрос. Попробуйте распечатать полный запрос и запустить его в mysql, чтобы получить четкое представление. Возможно, некоторые переменные выглядят пустыми, поэтому эти условия не добавляются в запрос.

Я использовал подобный запрос в моей базе данных, показанный ниже:

SELECT * FROM database.subsection where 1 and subsection_type='textbox' and subsection_position=2 and (creation_time between '2016-09-29 18:46:41' and '2016-09-30 10:56:40'); 

Этот запрос дает мне правильные результаты на моей базе данных. Пожалуйста, проверьте код, возможно, у вас что-то отсутствует.

+0

Спасибо за ваш повтор. да ты прав. Ошибка исходила из кода, который я использовал перед условиями поиска по дате. –

+0

@BayarShahab Вы должны переместить этот вопрос, чтобы решить тогда. :) – Ayush