如何使用MySQL查询从数据库中的所有行中找到类似的结果


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

我想让"搜索你的登录"像在facebook:中一样

例如。搜索"库存溢出"将返回

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."'%";

尝试这种方式

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

获取类似关键字的信息

注意

  • 请避开mysql_。。。使用mysqli_或PDO

使用此更改查询

$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%'";