我已经使用PHP& amp;构建了一个动态搜索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') ";
}
答案 0 :(得分: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');
此查询在我的数据库中给出了正确的结果。请检查你的代码,也许你错过了那些东西。