【发布时间】:2020-09-23 09:39:06
【问题描述】:
我正在尝试制作搜索键功能。但我没有得到以下查询的任何结果。
public function SearchKey($key,$userid)
{
$key = mysqli_real_escape_string($this->db, $key);
$userid = mysqli_real_escape_string($this->db, $userid);
$query = mysqli_query($this->db,"SELECT * FROM posts WHERE
MATCH(theKey) AGAINST('$key' IN NATURAL LANGUAGE MODE)
AND uid = '$userid' ORDER BY sgq_id LIMIT 5") or die(mysqli_error($this->db));
while($row=mysqli_fetch_array($query)) {
$data[]=$row;
}
if(!empty($data)) {
return $data;
}
}
然后获取,
$search = $Data->SearchKey($key, $userid);
if($search){
foreach($search as $data){
echo $data['theKey'];
}
}
例如,如果我搜索 OK005,则无法获得任何结果。我试过全文搜索功能https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
任何人都可以在这里帮助我,我缺少什么?
【问题讨论】:
-
您是把
'$key'和'$userId'直接放在查询中,还是它们被替换为占位符? -
@skrrp $key 是搜索值,$userId 是登录用户ID。
-
好的。在进行数据库调用之前打印出 SQL 字符串。当您自己对数据库运行该查询时,请发布生成的 SQL 以及 MySQL 的输出。
-
当我从 MySQL 运行 SQL 查询时,我得到了正确的结果。 :\
-
如果这是真正的代码,而不是为问题重新键入,那么您拼错了一个变量!
$search = $Data->SearchKey($key, $userid); if($serach){-- 注意serach