php如何进行部分搜索/输入和下拉菜单搜索?

问题描述 投票:0回答:1

我正在尝试分别进行此搜索/部分搜索和下拉菜单搜索。例如,当我使用下拉菜单搜索时,输入搜索栏将为空,仅显示下拉菜单搜索栏的结果。当我只进行部分搜索时,我的代码运行良好,但是每当我使用下拉菜单搜索时,并且如果输入栏为空,它只会显示数据库中的所有结果。有解决方法吗?谢谢:)我已经试过弄乱%符号,但是它仍然无法按照我想要的方式工作。


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

    $search = $db->real_escape_string($_POST['search']);
    $category = $_POST['category'];

    $resultSet = $db->query("SELECT * FROM books WHERE booktitle LIKE '%$search%' OR category = '$category'");


    echo "<table border='1'>";
    echo "<th>Author</th><th>Book Title</th><th>Reserved</th>";

    if($resultSet->num_rows > 0){
        while($rows = $resultSet->fetch_assoc()){
            $au = $rows['author'];
            $bt = $rows['booktitle'];
            $rev = $rows['reserved'];
            echo"<tr><td>$au</td><td>$bt</td><td>$rev</td></tr>\n";
        }
        echo"</table>";
    }


php mysql search input dropdown
1个回答
0
投票

您的问题是,如果搜索为空白,则WHERE部分显示为“ WHERE booktitle like'%%',实际上每一行都会匹配。

您可以这样调整:

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

    $search = $db->real_escape_string($_POST['search']);
    if ($search != "") {
        $search = "%" . $search . "%";
    }
    $category = $_POST['category'];

    $resultSet = $db->query("SELECT * FROM books WHERE booktitle LIKE '$search' OR category = '$category'");


    echo "<table border='1'>";
    echo "<th>Author</th><th>Book Title</th><th>Reserved</th>";

    if($resultSet->num_rows > 0){
        while($rows = $resultSet->fetch_assoc()){
            $au = $rows['author'];
            $bt = $rows['booktitle'];
            $rev = $rows['reserved'];
            echo"<tr><td>$au</td><td>$bt</td><td>$rev</td></tr>\n";
        }
        echo"</table>";
    }
}

这基本上使LIKE语句仅在必要时包含%运算符。这不是一个完美的解决方案,但应该可以完成工作。

© www.soinside.com 2019 - 2024. All rights reserved.