我正在尝试使用准备好的语句构建一个 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 注入。