[英]MySQL return rows where column contains categories defined by array (and add weight to the results)
在我的應用中,用戶可以輸入無限數量的類別進行搜索。 用戶點擊“提交”后,我將使用AJAX調用PHP腳本來查詢數據庫,並返回與用戶為類別定義的結果匹配的結果。
我的類別列按行分別分隔:“藍色,紅色,黃色,綠色”等。
我有兩個問題:
感謝您抽出寶貴的時間查看我的問題。
對於第1部分,您可以使用以下功能:
<?php
function createquery($dataarray){
$query="select * from table where ";
$loop=1;
foreach($dataarray as $data)
{
$query.="col='$data'";
if(count($dataarray)<$loop-1){
$query.=' or ';
}
$loop++;
}
return $query;
}
?>
這將返回長查詢。
這樣使用:
mysql_query("select * from table where category in (".implode($yourarray,',').")");
1)
數組不傳遞給MySQL數據庫。 過去的查詢是一個字符串,它告訴數據庫您要執行的操作。 一個示例是: SELECT * FROM myTable WHERE id = 1
。
由於您嘗試使用數組中的值在數據庫中進行搜索,因此您可以執行一個foreach
循環以使用PHP中的所有這些列創建一個有效的SQL 命令 ,然后將該命令/查詢發送到數據庫。 例如:
$array = array('blue', 'red', 'yellow', 'green');
$sql = "SELECT ";
foreach ($array as $value)
{
$sql .= $value.", ";
}
$sql .= " FROM myTable WHERE id = 1";
重要! 強烈建議使用准備好的語句並綁定參數,以免被sql注入所破壞!
2)
您可以按照自己喜歡的方式訂購獲得的結果。 排序結果的示例如下:
SELECT * FROM myTable WHERE SALARY > 2000 ORDER BY column1, column2 DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.