簡體   English   中英

如何使用PHP進行多個關鍵字搜索

[英]How to multiple keyword search with php

我有一個tb_user數據庫,我想使用關鍵字進行搜索。 如果通過文本字段輸入這些關鍵字。 如果用戶在文本字段中輸入一個搜索詞,則可以顯示結果,但是如果用戶在文本區域中輸入多個由逗號分隔的關鍵字,我不確定如何執行查詢。 請幫忙

我的表中的列包含這樣的值:

user_current_location

  1. 德里,比哈爾邦,孟買
  2. 諾伊達
  3. 浦那,德里
  4. 果阿,向上,西姆拉
  5. 新德里

也許有更好的方法,但是如果我必須使用現有知識來實現​​,我會做這樣的事情:

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM