首页 > 解决方案 > 在多行查询的 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' ';

标签: mysql

解决方案


最好使用准备好的语句而不是它。下面的代码只是解决您的问题,但使用准备好的语句很好

如果条件,将 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"].'%")';
    }

推荐阅读