提问人:user2965052 提问时间:1/4/2023 更新时间:1/5/2023 访问量:62
Datatables 服务器端脚本并使用 SQL MATCH 命令搜索每一列
Datatables server side script and search on every column using SQL MATCH COMMAND
问:
我正在尝试将 MATCH SQL 命令与服务器端数据表脚本一起使用,但不知何故数据表无法工作,它没有找到任何结果,但如果我将查询输出复制并粘贴到任何 sql 客户端,它工作正常并找到预期的结果(匹配)。
为了让你了解上下文,这就是我现在所做的:
1-在数据库上创建一个FULLTEXT索引,其中包含将用于搜索的列:
ALTER TABLE site ADD FULLTEXT INDEX fulltext_index_site (id, title, domain);
2-更改了服务器端脚本中搜索字符串的逻辑:
$searchValue = mysqli_real_escape_string($mysqli,$_POST['search']['value']); // Search value
## Search
$searchQuery = " ";
if($searchValue != ''){
$searchQuery = " AND MATCH(id, title, domain) AGAINST('".$searchValue."' IN BOOLEAN MODE)";
}
3-我已将查询更改为使用MATCH命令:
select id, title, domain
from site
where 1 ".$searchQuery."
4-但是如果我去客户端搜索一些东西,找不到任何结果......我还检查了有效负载,search[value] 具有要搜索的值,但没有返回任何结果。即使我放了一个回声并得到输出:
select id, title, domain
from site
where 1 AND MATCH(id, title, domain) AGAINST('test' IN BOOLEAN MODE);
并且在 sql 客户端上运行良好,它返回与“test”模式匹配的所有行,但在数据表上只说“未找到结果”。
5-我什至尝试使用LIKE OR方法,但这无法正常工作,因为该模式必须是搜索到的每个列的巧合。
例如:
## Search
$searchQuery = " ";
if($searchValue != ''){
$searchQuery = " AND (id LIKE '%".$searchValue."%' OR title LIKE '%".$searchValue."%' OR domain LIKE '%".$searchValue."%')";
}
我对此有点筋疲力尽,并且不知道为什么不能在服务器端脚本上工作,而是在 sql 客户端上工作。
任何帮助将不胜感激。
答:
0赞
user2965052
1/4/2023
#1
我发现了问题!在砸碎行之前,我得到了重复!谢谢。$row = $result->fetch_assoc()
while ($row = $result->fetch())
评论