Php 我想要一张单人床,在这种情况下在哪里?

Php 我想要一张单人床,在这种情况下在哪里?,php,mysql,Php,Mysql,我的MySQL有这个问题,我有3个组合框,我想得到它们的值,这样我就可以为它们创建一个过滤器。我想为这些代码设置1where,所以有人可以帮助我。短暂性脑缺血发作 if($this->input->get('name')) $name = $this->input->get('name'); else $name = ""; $namecondition = "";

我的MySQL有这个问题,我有3个组合框,我想得到它们的值,这样我就可以为它们创建一个过滤器。我想为这些代码设置1
where
,所以有人可以帮助我。短暂性脑缺血发作

if($this->input->get('name')) 
            $name = $this->input->get('name');
        else   
            $name =  "";
        $namecondition = "";
            if(strlen($name) > 0)
                $namecondition .= "WHERE E.`nameid` = '$name'";

        if($this->input->get('age')) 
            $age = $this->input->get('age');
        else   
            $age =  "";
        $namecondition2 = "";
            if(strlen($age) > 0)
                $namecondition2 .= "WHERE E.`ageid` = '$name'";

        if($this->input->get('year')) 
            $year = $this->input->get('year');
        else   
            $year =  "";
        $namecondition = "";
            if(strlen($year) > 0)
                $namecondition3 .= "WHERE E.`yearid` = '$name'";            

        $sSQL = "SELECT *,COALESCE(E.`id`,0) AS 'eid'
                 FROM employee AS E
                 LEFT JOIN name AS B ON E.nameid = B.id
                 LEFT JOIN age AS C ON E.ageid = C.id
                 LEFT JOIN year AS J ON E.yearid = J.id
                 $namecondition
                 ORDER BY E.lastName ASC"; 

要连接这些位置,您需要的是和,而不是每次连接的位置。并仅使用单个
$namecodition
变量来构建where字符串(无
$namecodition2
$namecodition3

所以你可以这样做。默认情况下,从一个虚拟的开始:

$namecondition = "WHERE 1 ";
以及每种浓缩使用和:

$namecondition .= " AND E.`nameid` = '$name'";
等等


这将创建:
其中1和第一个\u条件以及第二个\u条件…

这是您的解决方案使用
其中1=1
并附加另一个以
开头的字符串

if($this->input->get('name')) 
        $name = $this->input->get('name');
    else   
        $name =  "";
    $namecondition = "";
        if(strlen($name) > 0)
            $namecondition .= " AND E.`nameid` = '$name'";

    if($this->input->get('age')) 
        $age = $this->input->get('age');
    else   
        $age =  "";
    $namecondition2 = "";
        if(strlen($age) > 0)
            $namecondition2 .= " AND E.`ageid` = '$name'";

    if($this->input->get('year')) 
        $year = $this->input->get('year');
    else   
        $year =  "";
    $namecondition = "";
        if(strlen($year) > 0)
            $namecondition3 .= " AND E.`yearid` = '$name'";            

    $sSQL = "SELECT *,COALESCE(E.`id`,0) AS 'eid'
             FROM employee AS E
             LEFT JOIN name AS B ON E.nameid = B.id
             LEFT JOIN age AS C ON E.ageid = C.id
             LEFT JOIN year AS J ON E.yearid = J.id
             where 1 = 1 
             $namecondition
             ORDER BY E.lastName ASC"; 

你为什么想要一个
where
子句???当前SQL在我看来很好!!我将根据三个组合框的值创建一个过滤器