mysql - 在多行查询的 WHERE 子句上添加条件
问题描述
我有一个多行的 ajax 查询,我希望查询只显示具有“活动”状态的结果
$query .= "SELECT * FROM students ";
if(isset($_POST["search"]["value"]))
{
$query .= 'first_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR last_name LIKE "%'.$_POST["search"]["value"].'%" ';
第二个和第三个查询是针对用户何时使用搜索框,
我希望搜索框也只显示“活动”的
我试过做这些无济于事
$query .= "SELECT * FROM students WHERE status='active' AND ";
if(isset($_POST["search"]["value"]))
{
$query .= 'first_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR status='active' AND last_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= "SELECT * FROM students";
if(isset($_POST["search"]["value"]))
{
$query .= 'first_name LIKE "%'.$_POST["search"]["value"].'% && status='active' ';
$query .= 'OR last_name LIKE "%'.$_POST["search"]["value"].'% && status='active' ';
解决方案
最好使用准备好的语句而不是它。下面的代码只是解决您的问题,但使用准备好的语句很好
如果条件,将 AND 放在一边
$query = "SELECT * FROM students WHERE status='active'";
if(isset($_POST["search"]["value"])){
$query .= 'AND ( first_name LIKE "%'.$_POST["search"]["value"].'%"
OR last_name LIKE "%'.$_POST["search"]["value"].'%")';
}
推荐阅读
- firebase-realtime-database - firebase 实时数据库数据消失
- vb.net - 在 VB.Net 运行时设置数据库类
- nginx - 如何在 Phusion Passenger Enterprise 的编译中启用 GeoIP 支持?
- java - Scanner.nextInt() 在 InputMismatchException 之后抛出 NoSuchElementException
- java - 我的 playframework 项目中的错误说该类的位置与其内容不匹配
- lua - Roblox Glitch:Gear 仅在本地显示,不会向同一服务器上的其他玩家显示
- pandas - read_csv 'NoneType' 对象没有属性 ''
- suitescript2.0 - 查看记录时显示“N/ui/message”栏
- ruby-on-rails - Ruby 1.8.7 的 OpenSSL 问题
- java - 如何将字符串列表中的元素与字符串数组列表进行比较?