Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 conidTransitional语句_Php_Mysql_Mysqli_Where - Fatal编程技术网

Php conidTransitional语句

Php conidTransitional语句,php,mysql,mysqli,where,Php,Mysql,Mysqli,Where,我正在尝试为和高级搜索栏编写一个MySQL语句。本质上,如果变量不是空的,我需要它只包含WHERE语句的部分 这就是我放弃的地方: $sql = "SELECT * FROM Products WHERE if($brand != '', brand='$brand' AND, brand LIKE _%)"; 我需要这样的东西: SELECT * FROM Products WHERE (brand = variable)<-[ONLY IF VARIABLE IS NOT BLANK

我正在尝试为和高级搜索栏编写一个MySQL语句。本质上,如果变量不是空的,我需要它只包含WHERE语句的部分

这就是我放弃的地方:

$sql = "SELECT * FROM Products WHERE if($brand != '', brand='$brand' AND, brand LIKE _%)";
我需要这样的东西:

SELECT * FROM Products WHERE (brand = variable)<-[ONLY IF VARIABLE IS NOT BLANK]

如果“blank”的意思是
NULL
,则更方便:

SELECT * FROM Products WHERE brand IS NULL
如果处理的是可能为空的字符串,则如下所示:

SELECT * FROM Products WHERE brand IS NULL OR brand=''

如果你处理的东西可能是“两个空格,可能是一个或两个随机的选项卡”,那么它会变得很混乱,因此你可能希望删除应用程序代码中插入此项的任何数据。

你应该使用
PDO
MySQLi
,但下面只是给你一个想法:

    $query = "
SELECT
    *
FROM
    Products
WHERE
    1";

    if( $brand != '' )
    {
        $query .= "
    AND brand = '" .$brand ."'";
    }

    if( $color != '' )
    {
        $query .= "
    AND color = '" .$color ."'";
    }

但是,这将在MySQL数据库中搜索空品牌。然而,我需要检查PHP脚本中的一个变量是否为NULL,如果它不为NULL,那么就在查询中包含这个代码段。这非常有效!谢谢我并不担心它的安全性,因为只有我自己和我公司的几位经理在本地网络上使用它。“不担心它的安全性”是一句可怕的话。如果有人认为这个工具太棒了,他们开始与客户分享它怎么办?第一次就把它做好。没有借口。
    $query = "
SELECT
    *
FROM
    Products
WHERE
    1";

    if( $brand != '' )
    {
        $query .= "
    AND brand = '" .$brand ."'";
    }

    if( $color != '' )
    {
        $query .= "
    AND color = '" .$color ."'";
    }