Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Filter php搜索引擎过滤器_Filter_Search Engine - Fatal编程技术网

Filter php搜索引擎过滤器

Filter php搜索引擎过滤器,filter,search-engine,Filter,Search Engine,我有一个简单的搜索引擎,它工作得很好,但是现在我想让用户选择一个要搜索的区域,我在数据库表中添加了一个名为location的字段,它保存了表中每个数据行的区域id,当用户在搜索时在输入字段中插入区域id时,具体结果将根据id显示,但我在查询时遇到了问题,因为我的查询可能不正确,我进行了测试,所谓的过滤器在某种程度上起作用,但它显示了两个错误,注意:未定义索引:userID在…和注意:未定义索引:name在…中,我知道这是因为我的查询方式,所以: 我做错了什么 是否可以使用一个查询使所有代码都工作

我有一个简单的搜索引擎,它工作得很好,但是现在我想让用户选择一个要搜索的区域,我在数据库表中添加了一个名为location的字段,它保存了表中每个数据行的区域id,当用户在搜索时在输入字段中插入区域id时,具体结果将根据id显示,但我在查询时遇到了问题,因为我的查询可能不正确,我进行了测试,所谓的过滤器在某种程度上起作用,但它显示了两个错误,注意:未定义索引:userID在…注意:未定义索引:name在…中,我知道这是因为我的查询方式,所以:

  • 我做错了什么

  • 是否可以使用一个查询使所有代码都工作

  • 谢谢大家

    <form method="POST" action="">
        <input type="text" name="search">
        <input type="text" name="location">
        <button type="submit" name="submit">search</button>
    </form>
    <?php
        require_once 'db.php';
        if(isset($_REQUEST['submit'])) {
            $search = str_replace(array('%','_'),'',$_POST['search']);
            if ($search){
                if (isset($_POST["location"])){                 
                    $location= $_POST["location"];                              
                    $query = "SELECT * FROM shoplist WHERE name LIKE :search OR userID LIKE :search";
                    $much = $muc->prepare($query);
                    $much->bindValue(':search', '%' . $search . '%', PDO::PARAM_INT);
                    $much = $muc->prepare('SELECT location from shoplist WHERE      location =:location');
                    $much->bindParam(':location', $location);
                    $much->execute();
                    if ($much->rowCount() > 0) { 
                        $result = $much->fetchAll();  
                        foreach( $result as $row ) {
                           $userID = $row['userID'];
                           $name = $row['name'];
                           $location= $row['location'];
                        }
                    }
                }
            }
        }
    ?>
    
    
    搜索
    
    简单的事情总是正确的答案:

    更改为:

      $query = "SELECT * FROM shoplist WHERE name LIKE :search OR userID LIKE :search";
                $much = $muc->prepare($query);
                $much->bindValue(':search', '%' . $search . '%', PDO::PARAM_INT);
                $much = $muc->prepare('SELECT location from shoplist WHERE      location =:location');
                $much->bindParam(':location', $location);
    
    为此:

     $query = "SELECT * FROM shoplist WHERE location=:location AND (name LIKE :search OR userID LIKE :search)";
                $much = $muc->prepare($query);
                $much->bindValue(':search', '%' . $search . '%', PDO::PARAM_INT);
                $much->bindParam(':location', $location);