我是新来的。我只有 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
索引使用由空格和标点符号分隔的“单词”。所以这些词是1
, 3
, 和sup
。
更麻烦的是…… FULLTEXT
默认一个“单词”至少有 3 个字母。所以sup
将是唯一的“词”。
那么该怎么办?如果您可以决定规范形式,请参阅=
、LIKE
或REGEXP
进行字符串比较,而不是FULLTEXT
。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消