【问题标题】:php how to partial search / input and dropdown menu search?php如何进行部分搜索/输入和下拉菜单搜索?
【发布时间】:2019-12-03 23:05:57
【问题描述】:

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


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】:

    您的问题是,如果搜索为空白,则 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 语句仅在必要时才包含 % 运算符。这不是一个完美的解决方案,但应该可以完成工作。

    【讨论】:

    • 非常感谢!几个小时以来,我一直试图弄清楚这一点。你的传奇伙伴欢呼
    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2022-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多