使用like和=在相同的mysqli准备语句中

时间:2014-04-11 09:17:00

标签: select mysqli prepared-statement sql-like

我遇到了在mysqli准备好的声明中获得所需结果的问题。我在where条件中使用like和=。

//我的搜索变量

$a = "%{$_REQUEST['a']}%";
$b = "%{$_REQUEST['b']}%";
$search_from_date = $_REQUEST['from_date'];
$search_to_date = $_REQUEST['to_date'];

//我的查询

$q = $mysqli->prepare("SELECT t1.* from table1 t1 where (t1.a like ? and t1.b like ?) and (date(last_updated) between ? and ?) limit ".$start.','.$per_page);

$q->bind_param('ssss',$a,$b,$search_from_date,$search_to_date);

如果在搜索时考虑日期,我无法获得结果。如果我从其他字段的语句搜索中删除日期,那么效果很好。

告诉我如果没有针对该搜索条件的输入,如何从语句中删除搜索条件本身。我的意思是如果未指定to_date,则查询应将该列替换为1

通过这样做,即使没有指定搜索条件,我也会得到默认的30行。

1 个答案:

答案 0 :(得分:0)

日期格式很可能不兼容。许多数据库使用原生ISO 8601日期(yyyy-mm-dd)。您能确保您的请求日期格式正确吗?

相关问题