[英]subquery MY SQL
我正在我的網站上做一個搜索器,我需要在我的選擇查詢中包含我需要的所有約束。
在我的搜索器中,用戶可以寫一個關鍵字,寫一個最低價格和一個最高價格,並在某些類別之間進行選擇,但沒有必要通過填寫所有字段來找到結果,作為用戶,您必須能夠找到通過填充所有內容或僅填充其中一個,所以我必須做一個約束來分離它。
我正在嘗試類似的東西:
$var1 = $_POST['var1']; //name - type = text
$var2 = $_POST['var2']; //min price - type = integer
$var3 = $_POST['var3']; //max price - type = integer
$var4 = $_POST['var4']; //array of categories
$select_query = "SELECT * FROM objects WHERE x=1";
if($var1 != NULL || $var1 != ''){
"AND name like '%$var1%'"
}
if(($var2 != NULL || $var2 != '') AND ($var3 != NULL || $var3 != '')){
"AND price=>$var2 AND price =>$var3'"
}
這里我有一個額外的問題,因為我想返回用戶選擇的任何類別,所以首先它必須是一個 AND 才能繼續查詢,但它必須是一個 OR,在類別之間,問題是最后一個將失敗。
if($var4 != NULL || $var4 != ''){
" AND(";
foreach $var4 as $cat){
"id_category = $cat OR";
}
")";
}
任何提示? 謝謝!
嘗試使用 PHP 的 implode 函數:
" AND(" . implode("OR ", $var4) . ")"
您需要確保 $var 是非空數組。
另外,請閱讀 SQL 注入以及如何使用 PHP 正確轉義 SQL 查詢,以便與數據庫交互的代碼是安全的:
http://php.net/manual/en/security.database.sql-injection.php
謝謝,但我做錯了查詢!
解決方案是:
$select_query = "SELECT * FROM objects WHERE x=1";
if($var1 != NULL || $var1 != ''){
$select_query = "AND name like '%$var1%'"
}
我用 for 做了最后一個例子。
謝謝你們!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.