用户在php中搜索多个值

beq87vna  于 2023-01-24  发布在  PHP
关注(0)|答案(1)|浏览(120)

我试图实现一个简单的搜索工具,从数据库中搜索使用用户输入。
表格有3个字段用于输入:

但是当我一个一个的搜索时,只有最上面的一个是正常的,其他的只是给出了整个数据库记录。这是HTML表单。

<table> <tbody>
<tr>
    <p style="padding:5px;">Судалгааны чиглэл:</p>
    <input type="text" name="get_sudalgaa" id="search" 
    class="searchTerm" style="width: 81%; margin-bottom: 15px;" 
    placeholder="Хайх эрдэмтний овог нэрийг оруулна уу?" >
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <button type="submit" name="search_by_id" value="" class="btn btn- 
    success searchButton" style="width: 15%; height: 40px; margin- 
    bottom: 8px;">Хайх</button>
 </tr>     </br>

<tr>    <p>Овог:</p>    <input type="text" name="get_ovog" id="search" class="searchTerm">    <p style="padding:5px;">Нэр:</p>    <input type="text" nrame="get_ner" id="search" class="searchTerm"> </tr> </tbody> </table>

<?php $connection = mysqli_connect("localhost","root","","sci");  $connection -> set_charset("utf8"); if(isset($_POST['search_by_id'])){ $ovog=$_POST['get_ovog'];   $ner=$_POST['get_ner'];   $sudalgaa=$_POST['get_sudalgaa'];   $query="SELECT * FROM sci_st WHERE Id='get_id' OR Ovog='$ovog' OR Ner='$ner' OR Sudalgaa='{%$sudalgaa%}'";
                 
               $query_run=mysqli_query($connection,$query); ?>
eit6fx6z

eit6fx6z1#

在此类搜索表单中,如果用户提供多个字段数据(例如名、姓、研究),那么这些记录从数据库中检索所有这些关键字匹配。这意味着你应该使用**“AND”**运算符在您的SQL查询。这是一个最好的方法。如果你使用“OR”运算符,那么检索到的记录将没有有用的信息,因为每个数据字段(例如,名、姓、研究)将有自己的记录,这些记录彼此之间没有联系。

最佳方法

最好的方法是使用“AND”运算符,如@anant注解中所述,但使用AND运算符:

if(!empty($lastname) OR !empty($firstname) OR !empty($_POST['get_research'])) {

    if(!empty($lastname))
            $condition = "Lastname  = '$lastname' "; 
    else
            $condition = "1=1 "; 

    if(!empty($firstname))
            $condition .= "AND WHERE Firstname = '$firstname' ";

    if(!empty($_POST['get_research']))
            $condition .= "AND Research LIKE '%" .$research. "%'";

    $query = "SELECT * FROM sci_st WHERE ".$condition; 
  }

相关问题