php搜索引擎过滤器



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

  1. 我做错了什么?

  2. 是否可以使用一个使所有代码都工作的查询?

谢谢大家。

<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);