【问题标题】:With PHP MYSQL Prepared Statements and IFNULL() to return all records if value = ""如果 value = "" 则使用 PHP MYSQL Prepared Statements 和 IFNULL() 返回所有记录
【发布时间】:2013-07-10 17:29:27
【问题描述】:

我正在尝试使用准备好的语句构建一个 MySQL 查询,如果它被设置为 NULL,它将忽略一个条件。例如,在下面,如果$a = ""$b = "10",我希望查询返回列 b 包含值 10 的所有记录并忽略 a 条件,因为目前,查询将返回所有具有 ' a' 列值为“”,“b 列”值为“10”。

    if ($stmt = $mysqli->prepare("SELECT x, y FROM users WHERE a = IFNULL(?, %%) AND b = IFNULL(?, %%) AND ...")) { 
    $stmt->bind_param('ss...', $a, $b, ...); // Bind variables to parameter.
    $stmt->execute(); // Execute the prepared query.
    $stmt->store_result();
    }

我应该用什么替换 '%%' 以返回所有内容,就好像没有设置标准一样?

编辑:在此处找到不使用预准备语句的答案,而是使用一组允许的字符串以确保安全以阻止 SQL 注入。

Multiple Dropdowns Dynamic Query AJAX PHP MySQL

【问题讨论】:

    标签: php mysqli prepared-statement ifnull


    【解决方案1】:

    你是说

    WHERE ((a IS NULL) AND (b = 10))
    

    ?

    【讨论】:

    • 是的,但如果适用,也可以反过来,这样它是动态的:WHERE ((b IS NULL) AND (a = 10))
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多