Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将查询与PDO准备语句中的if-else连接起来_Php_Mysql_Pdo_Mysqli_Prepared Statement - Fatal编程技术网

Php 将查询与PDO准备语句中的if-else连接起来

Php 将查询与PDO准备语句中的if-else连接起来,php,mysql,pdo,mysqli,prepared-statement,Php,Mysql,Pdo,Mysqli,Prepared Statement,我试图将简单的MySQLi查询转换为PDO准备的语句 这是旧代码 if($mode=='') { $query="SELECT * FROM items WHERE 1"; if($CuisineId != '') { $query=$query. " AND CuisineId='$CuisineId' "; } if($CategoryId != '') { $query=$query. " AND Catego

我试图将简单的MySQLi查询转换为PDO准备的语句 这是旧代码

if($mode=='')
{
    $query="SELECT * FROM items WHERE 1";
    if($CuisineId != '')
    {
        $query=$query. " AND CuisineId='$CuisineId' ";
    }
    if($CategoryId != '')
    {
        $query=$query. " AND CategoryId='$CategoryId'  ";
    }
    if($DietId != '')
    {
        $query=$query. " AND DietId='$DietId' ";
    }

    $query=$query. " ORDER BY Name ";

    $result= execute_query($con,$query) or die(mysqli_error($con));
    echo "<option value=''>Select One</option>";
    while ($row=mysqli_fetch_array($result)) {
        echo "<option value=". $row['Id'] .">" . $row['Name'] . "</option>";
    }
}
如果我开始做If-ELSE将所有的可能性,它将使我的代码太长。有没有办法解决这个问题


提前感谢:)

您不需要连接此查询

SELECT * 
FROM items 
WHERE (? is null or CuisineId = ?)
  and (? is null or CategoryId = ?)
  and (? is null or DietId = ?)
ORDER BY Name
$stmt->execute(array($CuisineId,$CategoryId,$DietId));
SELECT * 
FROM items 
WHERE (? is null or CuisineId = ?)
  and (? is null or CategoryId = ?)
  and (? is null or DietId = ?)
ORDER BY Name