[英]How to multiple keyword search with php
我有一個tb_user數據庫,我想使用關鍵字進行搜索。 如果通過文本字段輸入這些關鍵字。 如果用戶在文本字段中輸入一個搜索詞,則可以顯示結果,但是如果用戶在文本區域中輸入多個由逗號分隔的關鍵字,我不確定如何執行查詢。 請幫忙
我的表中的列包含這樣的值:
user_current_location
也許有更好的方法,但是如果我必須使用現有知識來實現,我會做這樣的事情:
$wordString = $_POST['search'];
if (strpos($wordString, ",")){
$words = explode(",", $wordString);
$sql = "SELECT * FROM tb_user WHERE";
foreach($words as $word){
$sql.=" field LIKE '%$word%' OR";
}
$sql = substr($sql, 0, -3);
}
else {
/* NO comma separated values, build normal query */
$sql = "SELECT * FROM tb_user WHERE user_current_location LIKE '%$wordString%'";
}
如果用戶輸入“ delhi,noida”,則結果查詢為:
"SELECT * FROM tb_user
WHERE user_current_location LIKE '%delhi%'
OR user_current_location LIKE '%noida%'"
或者您可以使用REGEX :
SELECT *
FROM tb_user
WHERE user_current_location REGEXP "*delhi*|*noida*";
首先,我不得不提到,根據您用來訪問數據庫的內容(PDO或mysql_ *),應確保它對sql注入安全,並取決於在foreach循環中是否進行了適當的轉義。
除了安全性,我認為按照自己的方式進行操作沒有任何問題(除了可能過濾空字符串,使諸如delhi,
東西無法匹配所有內容( %dehli%
和%%
)。
例如:
foreach ($words as $word)
{
$sql .= " field LIKE '%" + mysql_real_escape_string($word) + "%' OR ";
}
(實際上建議改用PDO,但我認為您可能正在使用mysql_ *函數)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.