0

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

    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 注入。

多个下拉列表 动态查询 AJAX PHP MySQL

4

1 回答 1

-1

你的意思是

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

?

于 2013-07-10T17:31:07.777 回答