我是新来的。我只有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^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
。