php – 忽略特定的WHERE标准

我想执行参数化查询以通过用户提供的参数执行搜索.有很多参数,并不是所有参数都会一直供应.如何创建指定所有可能参数的标准查询,但如果用户未选择有意义的参数值,则忽略其中一些参数? 这是一个虚构的例子来说明我的目标 $sql = ‘SELECT * FROM people WHE

我想执行参数化查询以通过用户提供的参数执行搜索.有很多参数,并不是所有参数都会一直供应.如何创建指定所有可能参数的标准查询,但如果用户未选择有意义的参数值,则忽略其中一些参数?

这是一个虚构的例子来说明我的目标

$sql = 'SELECT * FROM people WHERE first_name = :first_name AND last_name = :last_name AND age = :age AND sex = :sex';
$query = $db->prepare($sql);
$query->execute(array(':first_name' => 'John',':age' => '27');

显然,这不起作用,因为提供的参数数量与预期参数的数量不匹配.我是否必须每次只使用WHERE子句中包含的指定参数来制作查询,或者是否有办法让某些参数被忽略或在检查时始终返回true?
最佳答案

SELECT * FROM people 
WHERE (first_name = :first_name or :first_name is null)
AND (last_name = :last_name or :last_name is null)
AND (age = :age or :age is null)
AND (sex = :sex or :sex is null)

传递参数时,为不需要的参数提供null.

请注意,为了能够以这种方式运行查询,必须打开PDO的仿真模式

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐