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