gpt4 book ai didi

mysql - 在与 mysql 的匹配中使用变量的技巧

转载 作者:行者123 更新时间:2023-11-29 12:29:17 25 4
gpt4 key购买 nike

请先阅读我的问题,然后您会发现它与其他问题不重复。

我使用 sphinx 搜索进行 98% 的搜索,但仅需要对一个查询使用匹配。

正如我们从 mysql 文档中所知,AGAINST 仅接受字符串。搜索字符串必须是文字字符串,而不是变量或列名。

但是我找到了这个链接http://bugs.mysql.com/bug.php?id=66573 ,这表明这是可能的。但我不确定如何在我的情况下使用它。

这是我的代码

    $sqli="SELECT busi_title,category FROM `user`.`user_det`";
$queryi=mysqli_query($connecti,$sqli);
if(mysqli_num_rows($queryi)>0){
while($rowi=mysqli_fetch_assoc($queryi)){
$busi_title=$rowi['busi_title'];
$category=$rowi['category'];
}

}else{
echo "OH NO";
}

$sqlj="SELECT * FROM `user`.`user_det` WHERE MATCH(student) AGAINST('$busi_title','$category')";
$queryj=mysqli_query($connecti,$sqlj);
if(mysqli_num_rows($queryj)>0){
..............................
..............................
}else{
foreach ( $res["matches"] as $doc => $docinfo ) {
................................
...............................
}
}

MATCH() AGAINST() 给出错误,正如它应该的那样。在这种情况下如何使用该链接的技巧。我不知道 @ 的使用该链接的单词:=

提前致谢。

最佳答案

该链接没有显示绕过 MySQL 限制的技巧。这是一份错误报告,展示了 MySQL 文档中的错误陈述。文档中的声明现已更正。

您收到错误的原因是您向 AGAINST 发送了两个参数,而它只接受一个。您可以在 AGAINST 中使用 MySQL 变量,这就是错误报告的内容,但这与您正在使用的 PHP 变量无关。

编辑

在阅读您的回复后,我相当怀疑您的语法倒退了。

SELECT * FROM `user`.`user_dets` WHERE MATCH(busi_title, category) AGAINST('student')

但请注意文档中的这一点:

The MATCH() column list must match exactly the column list in some FULLTEXT index definition for the table, unless this MATCH() is IN BOOLEAN MODE. Boolean-mode searches can be done on nonindexed columns, although they are likely to be slow.

如果您没有全文索引,您实际上需要这个:

SELECT * FROM `user`.`user_dets` WHERE `busi_title` LIKE '%student%' OR `category` LIKE '%student%'

关于mysql - 在与 mysql 的匹配中使用变量的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com