PHP SQL JAVASCRIPT搜索不工作

PHP SQL JAVASCRIPT搜索不工作,javascript,php,mysql,sql,mysqli,Javascript,Php,Mysql,Sql,Mysqli,我在一家公司的网站上工作,那里有一个搜索栏,用来按姓名搜索客户和员工的数据库 我有下面代码()的输出 但是它只在输出()中单独搜索firstname和lastname,我想让它结合起来搜索firstname和lastname。 我想做这样的搜索() 到目前为止我有这个代码 index.php <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=dev

我在一家公司的网站上工作,那里有一个搜索栏,用来按姓名搜索客户和员工的数据库

我有下面代码()的输出 但是它只在输出()中单独搜索firstname和lastname,我想让它结合起来搜索firstname和lastname。

我想做这样的搜索()

到目前为止我有这个代码

index.php

<html>
 <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>INDEX PAGE</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
 </head>
 <body>
  <div class="container all">
   <br />
   <h2 align="center">COMPANY NAME</h2><br />

   <div class="form-group">
    <div class="input-group">
     <input type="text" name="search_text" id="search_text" placeholder="Search by Customer Details" class="form-control" />
    </div>
   </div>

   <div id="result"></div>
  </body>
</html>

<script>
$(document).ready(function(){

 load_data();

 function load_data(query)
 {
  $.ajax({
   url:"fetch.php",
   method:"POST",
   data:{query:query},
   success:function(data)
   {
    $('#result').html(data);
   }
  });
 }
 $('#search_text').keyup(function(){
  var search = $(this).val();
  if(search.length>=2){

  if(search != '')
  {
   load_data(search);
  }
}
  else
  {
   load_data();
  }

 });
});
</script>

索引页

公司名称
$(文档).ready(函数(){ 加载_数据(); 函数加载\u数据(查询) { $.ajax({ url:“fetch.php”, 方法:“张贴”, 数据:{query:query}, 成功:功能(数据) { $('#result').html(数据); } }); } $(“#搜索_文本”).keyup(函数(){ var search=$(this.val(); 如果(搜索长度>=2){ 如果(搜索!='') { 加载_数据(搜索); } } 其他的 { 加载_数据(); } }); });
和第二个文件

fetch.php

<?php

$connect = mysqli_connect("localhost", "root", "root", "users_db")or die("ERROR");
$output = '';
if(isset($_POST["query"]))
{
 $search = mysqli_real_escape_string($connect, $_POST["query"]);
 $query = "
  SELECT * FROM users_users 
  WHERE firstname LIKE '%".$search."%'
  OR lastname LIKE '%".$search."%' 
  AND lastname LIKE '%".$search."%'
  OR link LIKE '%".$search."%'
 ";
}
else
{

}
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
 $output .= '
  <div class="otp">
  </div>
 ';
 while($row = mysqli_fetch_array($result))
 {
  $output .= '
   <div class="oup">
   <a href="
   '.$row["link"].'
   ">
   '.$row["firstname"].'
   '.$row["lastname"].'
   </a>
   </div>
  ';
 }
 echo $output;
}
else
{
 echo '';
}

?>

上述代码有此输出…(输出1)

当我按空格键输入名字后,它会像(输出2)中一样空白

我想在键入名字后继续搜索,中间有空格键

像这样的。。在(输出3)中

我不熟悉php javascript和sql,所以请尝试为我详细介绍一下。 先谢谢你。
你们能给我一些技巧来优化更多的代码吗。

在我给出答案之前,我应该说你们的代码是可以接受SQL注入的。您应该了解如何解决此安全问题

现在回答你的问题。要同时搜索firstname和lastname,您应该在搜索之前分离搜索词。大概是这样的:

      // --- Separate the search items
      if ( !empty($search) ){

        $searchWords = explode(' ', $search);
        $searchTerms = array();
        foreach ($searchWords as $word) {
            $word = trim($word);
            if (!empty($word)) {
                $searchTerms[] = "(firstname LIKE '%$word%' OR lastname LIKE '%$word%')";
            }
        }

      }

      // --- Search each search items
      $query = "SELECT * FROM users_users WHERE".implode(' AND ', $searchTerms);
试试这个:

ALTER TABLE users_users ADD FULLTEXT(firstname, lastname, link);

$searchTerm = '+'.str_replace(' ','+',$search).'*';
$query = "SELECT * FROM users where MATCH(`firstname`,`lastname`,`link`) AGAINST (".searchTerm." IN BOOLEAN MODE)";

为什么要投否决票?你能解释一下或留下评论吗?