簡體   English   中英

如何使用MySQL查詢從DB中的所有行中查找類似的結果

[英]How to find similar results from all rows in DB with MySQL query

我想在facebook中制作“Search your LOGIN”:

例如。 搜索“股票溢出”將返回

Stack Overflow
SharePoint Overflow
Math Overflow
Politic Overflow
VFX Overflow

例如。 搜索“LO”將返回:

pabLO picasso
michelangeLO
jackson polLOck

例如。 搜索用戶名“user123”將返回:

 user123
 user1234
 and etc ...

我的數據庫行:

userid  |   username  |  useremail   |  user_fname   |  user_lname  

我想做一個搜索輸入,搜索上面任何一行中的單詞,如上例所示,

這里我的PHP到現在為止:

$string = $purifier->purify(@$_POST['string']); 

          $query = "SELECT * FROM users WHERE user_fname = '".$string."' OR user_lname = '".$string."' OR username = '".$string."' OR useremail= '".$string."'";
          mysql_query("SET NAMES 'utf8'");
          $result2 = mysql_query($query);
          $num = mysql_num_rows($result2);

          if($num == 1)
          {
              //true
          }else{

              //not found nothing
          }

這種方式效果不好,並沒有返回我在搜索輸入中輸入的所有類似的重復。 如果有超過1個類似的結果,我如何用foreach返回它?

謝謝分配。

更新:

謝謝大家,我的更新代碼來修復它:

 $query = "SELECT * FROM users WHERE user_fname like '%".$string."%' OR user_lname like '%".$string."%' OR username like  '%".$string."%' OR useremail like '%".$string."%'";

我沒有使用mysql,只是為了我更容易做到這樣的例子..

嘗試這個

$string = $purifier->purify(@$_POST['string']); 

      $query = "SELECT * FROM users WHERE user_fname like '%".$string."%' OR user_lname like '%".$string."%' OR username like  '%".$string."%' OR useremail like '%".$string."%'";
      mysql_query("SET NAMES 'utf8'");
      $result2 = mysql_query($query);
      $num = mysql_num_rows($result2);

      if($num == 1)
      {
                //true
              }else{

                 //not found nothing
              }

用此更改您的查詢

$query = "SELECT * FROM users WHERE user_fname LIKE '".$string."%' OR user_lname LIKE '".$string."%' OR username LIKE '".$string."%' OR useremail LIKE '".$string."%'";

注意:

如果您有user123關鍵字並且想要搜索具有數據user123*所有行,則可以應用通配符$string%

如果是*user123*你可以使用%$string%

如果是*user123您可以使用%$string

嘗試這個

$query = "SELECT * FROM users WHERE user_fname like '%".$string."%' OR user_lname like '%".$string."%' OR username like '%".$string."%' OR useremail like '%".$string."'%";

試試這種方式

$query = "SELECT * FROM users WHERE user_fname LIKE '%".$string."%' OR user_lname = '%".$string."%' OR username = '%".$string."%' OR useremail= '%".$string."%'";

關於Like關鍵字的信息

注意

  • 請避免使用mysq_ ...使用mysqli_或PDO

嘗試這個:

$query = "SELECT * FROM users 
WHERE user_fname LIKE '%$string%' 
OR user_lname LIKE '%$string%' 
OR username LIKE '%$string%' 
OR useremail LIKE '%$string%'";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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