【发布时间】: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 注入。
【问题讨论】:
标签: php mysqli prepared-statement ifnull