[英]How to write PHP code (using prepared statements) to return rows from MySQL DB when some input parameters use a value 'all' as wildcard?
[英]With PHP MYSQL Prepared Statements and IFNULL() to return all records if value = “”
我正在嘗試使用准備好的語句構建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注入的允許字符串數組。
你的意思是
WHERE ((a IS NULL) AND (b = 10))
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.