MySQL PHP部分搜索

MySQL PHP部分搜索,php,mysql,full-text-search,Php,Mysql,Full Text Search,我对部分世界搜索有问题 下面的代码可以工作,但只适用于全词搜索。如果我只在搜索框中输入部分单词,它将不起作用。请你能给我一个提示改什么才能做部分单词搜索吗 <?php include "connection.php"; $sql = "SELECT * FROM Klienci "; if (isset($_POST['search'])) { $search_term = mysql_real_escape_string($_POST['search_box']); $

我对部分世界搜索有问题

下面的代码可以工作,但只适用于全词搜索。如果我只在搜索框中输入部分单词,它将不起作用。请你能给我一个提示改什么才能做部分单词搜索吗

<?php include "connection.php";


$sql = "SELECT * FROM Klienci ";

if (isset($_POST['search'])) {

  $search_term = mysql_real_escape_string($_POST['search_box']);

  $sql .= "WHERE nazwaKlienta = '{$search_term}' ";
  $sql .= " OR adresMail = '{$search_term}' ";
  $sql .= " OR adresMail2 = '{$search_term}' ";
}

$query = mysql_query($sql) or die(mysql_error());

?>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>BAZA  | Dashboard</title>
  <!-- Bootstrap core CSS -->
  <link href="css/bootstrap.min.css" rel="stylesheet">

  <link href="css/jumbotron-narrow.css" rel="stylesheet">
</head>
<body>

  <div class="container">
    <div class="header">
      <ul class="nav nav-pills pull-right">
        <li class="active"><a href="index.php">Home</a></li>
        <li><a href="add_customer.php">Dodaj Firmę</a></li>
      </ul>
      <h3 class="text-muted">ITalents</h3>
    </div>

    <div class="row marketing">
      <div class="col-lg-12">

        <h2>KLIENCI</h2>
        <table class="table table-striped">

          <form name="search_form" method="POST" action="display_data.php">
            Search: <input type="text" name="search_box" value ="" />
            <input type="submit" name="search" value="Search the table..." >
          </form>

          <tr>
            <th>id</th>
            <th>Klient</th>
            <th>Email</th>
            <th>Email 2</th>
            <th>Data dodania do bazy</th>
          </tr>

          <?php while ($row = mysql_fetch_array($query)) {

            //Display customer info
            $output ='<tr>';
            $output .='<td>'.$row['id'].'</td>';
            $output .='<td>'.$row['nazwaKlienta'].'</td>';
            $output .='<td>'.$row['adresMail'].'</td>';
            $output .='<td>'.$row['adresMail2'].'</td>';
            $output .='<td>'.$row['dataDodania'].'</td>';
            $output .='<td><a href="edit_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Edit</a></td>';
            $output .='<td><a href="delete_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Delete</a></td>';
            $output .='</tr>';

            //Echo output
            echo $output;
            ?>
            <?php } ?>

          </table>

        </div>
      </div>

    </div>

    <div class="footer">
      <p>&copy; Company 2014</p>
    </div>

  </div> <!-- /container -->


</body>
</html>

&抄袭;公司2014


下面的代码应该可以工作。你必须使用LIKE而不是equal。例如:其中类似“%something2%”的内容

<?php include "connection.php";


$sql = "SELECT * FROM Klienci ";

if (isset($_POST['search'])) {

  $search_term = mysql_real_escape_string($_POST['search_box']);

  $sql .= "WHERE nazwaKlienta LIKE '%{$search_term}%' ";
  $sql .= " OR adresMail LIKE '%{$search_term}%' ";
  $sql .= " OR adresMail2 LIKE '%{$search_term}%' ";
}

$query = mysql_query($sql) or die(mysql_error());

?>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>BAZA  | Dashboard</title>
  <!-- Bootstrap core CSS -->
  <link href="css/bootstrap.min.css" rel="stylesheet">

  <link href="css/jumbotron-narrow.css" rel="stylesheet">
</head>
<body>

  <div class="container">
    <div class="header">
      <ul class="nav nav-pills pull-right">
        <li class="active"><a href="index.php">Home</a></li>
        <li><a href="add_customer.php">Dodaj Firmę</a></li>
      </ul>
      <h3 class="text-muted">ITalents</h3>
    </div>

    <div class="row marketing">
      <div class="col-lg-12">

        <h2>KLIENCI</h2>
        <table class="table table-striped">

          <form name="search_form" method="POST" action="display_data.php">
            Search: <input type="text" name="search_box" value ="" />
            <input type="submit" name="search" value="Search the table..." >
          </form>

          <tr>
            <th>id</th>
            <th>Klient</th>
            <th>Email</th>
            <th>Email 2</th>
            <th>Data dodania do bazy</th>
          </tr>

          <?php while ($row = mysql_fetch_array($query)) {

            //Display customer info
            $output ='<tr>';
            $output .='<td>'.$row['id'].'</td>';
            $output .='<td>'.$row['nazwaKlienta'].'</td>';
            $output .='<td>'.$row['adresMail'].'</td>';
            $output .='<td>'.$row['adresMail2'].'</td>';
            $output .='<td>'.$row['dataDodania'].'</td>';
            $output .='<td><a href="edit_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Edit</a></td>';
            $output .='<td><a href="delete_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Delete</a></td>';
            $output .='</tr>';

            //Echo output
            echo $output;
            ?>
            <?php } ?>

          </table>

        </div>
      </div>

    </div>

    <div class="footer">
      <p>&copy; Company 2014</p>
    </div>

  </div> <!-- /container -->


</body>
</html>

&抄袭;公司2014


您需要使用LIKE或regex。使用
LIKE
和通配符,或者查看全文搜索。也不要再使用
mysql.*
使用
PDO
MySQLi
。如果你在询问之前先在网上搜索,这对你和SO社区都是有益的。如果你只是用这篇文章的标题搜索谷歌,你会找到大量的资源来帮助你解决这个问题。。。也就是说,LIKE关键字将是您正在寻找的。如果您正在编写新代码,请不要使用
mysql.*
函数。它们是旧的、破损的,在PHP5.5中被弃用(它太旧了,甚至不再接收安全更新),在PHP7中被完全删除。使用或与准备好的语句和参数绑定一起使用。请参阅了解详细信息。无论如何,您应该避免使用mysql,我建议您学习mysqli或PDO。如果您在较新版本的PHP上运行此代码,它将无法工作,并且会使您的站点容易受到SQL注入的攻击。学习mysqli和mysql一样简单。更新@SMJobayerAlam,注意,mysql作为数据库使用是很好的。不过,PHP
mysql.*
函数不应该再使用了。