为了账号安全,请及时绑定邮箱和手机立即绑定

使用 PHP 搜索包含 1<sup>3</sup> + 2<sup>2</sup>

使用 PHP 搜索包含 1<sup>3</sup> + 2<sup>2</sup>

PHP
慕的地10843 2023-05-12 10:35:49
我是新来的。我只有 PHP 和 Mysql 的基础知识。我有一个数学表达式,例如:[1 3 + 2 4 + 9 2 - x 1 x 2 ]它存储在 MySQL 数据库中为:[1<sup>3</sup> + 2<sup>4</sup> + 9<sup>2</sup> - x<sub>1</sub>x<sub>2</sub>].我想使用输入字符串从 MySQL 数据库中搜索该列$str='1^3 + 2^4 + 9^2 - x_1x_2';。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 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

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

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

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

更麻烦的是…… FULLTEXT默认一个“单词”至少有 3 个字母。所以sup将是唯一的“词”。

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


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信