【发布时间】:2016-04-12 10:08:49
【问题描述】:
我想遍历数据库,对于每个值,我想通过在查询中使用 $idarray 中返回的 id 值来缩小搜索范围。例如,假设用户想要搜索“molly loves cats”,那么我想我首先在数据库中搜索“molly”并获取所有 id 并在下一次搜索时使用它们“爱”等等。最后,我会得到一个包含所有三个单词的所有 id 的列表。
搜索.php
$searchquery= (isset($_POST['searchq']) ? $_POST['searchq'] : NULL);
$q = explode(" ", $searchquery);
foreach($q as $key => $value){
$in = implode("','", $idarray);
if($stmt = mysqli_prepare($db_mysqli, "SELECT id FROM tbl_headlines WHERE (name LIKE ? OR header LIKE ?) AND id IN('$in')")){
$searchquerypre = "{$value}%";
mysqli_stmt_bind_param($stmt, "ss", $searchquerypre);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
mysqli_stmt_bind_result($stmt, $id);
if(mysqli_stmt_num_rows($stmt) > 0){
while (mysqli_stmt_fetch($stmt)){
$idarray[] = array('id'=> $id, 'resultat'=> true);
}
}
if(mysqli_stmt_num_rows($stmt) == 0){
$idarray[] = array('resultat'=> false);
}
}
}
echo json_encode($idarray);
jquery
$('#searchquery').on('keyup', function(){
var searchquery = $("#searchquery").val();
if ($("#searchquery").val().length > 1) {
$.ajax({
type: "POST",
dataType: "json",
url: "search.php",
data: {searchq: searchquery},
success: function(result){
console.dir(result);
},
error: function(){
alert('Error');
}
});
}
});
【问题讨论】:
-
为什么可以在 1 个查询中完成?
-
您可以在一个查询中搜索这些词,甚至可以设置该搜索的优先级
-
@Linda :所以你没有说你的代码到底出了什么问题??看起来你做的比用简单的方法做的困难多了..!