<sup>使用 PHP</sup> 搜索包含 1<sup>3</sup> + 2 2 等表达式的 Mysql 数据库



我是新来的。我只有PHP和Mysql的基本知识。

我有一个数学表达式,如下所示:

[13+ 24+ 92- x1x2]

存储在 MySQL 数据库中

[1<sup>3</sup> + 2<sup>4</sup> + 9<sup>2</sup> - x<sub>1</sub>x<sub>2</sub>].

我想使用输入字符串$str='1^3 + 2^4 + 9^2 - x_1x_2';从 MySQL 数据库中搜索该列。MySQL 列设置为全文索引,因此我需要使用 MATCH AGAINST 方法搜索它。

更新:我在下面添加了我的应用程序中的相关代码。

我的问题是为什么MySQL查询返回0.如果我甚至更改输入字符串,同样的事情也会发生。喜欢

$str=$_GET['search']; //$_GET['search'] is equal to '1<sup>3</sup> + 2<sup>4</sup> + 9<sup>2</sup> - x<sub>1</sub>x<sub>2</sub>'
//the $str contain the search string
$query = "(Select col1,col2,MATCH (col3) AGAINST ('".$str."' IN NATURAL LANGUAGE MODE) AS relevance from table_name WHERE MATCH (col3) AGAINST ('".$str."' IN NATURAL LANGUAGE MODE))";
$run = mysqli_query($connect, $query);
$foundnum = mysqli_num_rows($run);
//$foundnum returning  0

由于字符串1^31<sup>3</sup>不同,因此没有SQL方法可以使它们匹配。 此外,没有简单数量的PHP代码来声明它们是相同的。

您需要为"power"提供一个规范形式,并在表中的数据和搜索字符串中使用它。 也许您应该选择"数学"表示来搜索1^3您可以将第二列用于 HTML 表示1<sup>3</sup>

但是,还有另一个问题。FULLTEXT索引使用由空格和标点符号分隔的"单词"。 所以这些词是13sup

更麻烦...FULLTEXT"单词"默认至少为 3 个字母。 所以sup将是唯一的"词"。

那么,该怎么办呢? 如果可以决定规范形式,请参阅字符串比较的=LIKEREGEXP,而不是FULLTEXT

相关内容

  • 没有找到相关文章

最新更新