LIKE表达式中的MySQL连字符


MySQL hyphen in LIKE expression

我正在使用一个遗留的PHP框架,遇到了一些我无法追踪的奇怪行为。

我正在运行一个类似的查询

select * from table where column like '%word-anotherword%'

,我想从表中返回记录,其中列包含文本"单词另一个单词"。(列是一个长文本字段)。

当我在phpMyAdmin中运行这个查询时,我得到了预期的结果。但当我在我们的框架内运行它时,我没有得到任何结果。我在一个单独的.php文件中运行了它,使用mysql_linkmysql_query来运行查询,这也与预期的一样。

当我在将查询传递给mysql_query之前直接在框架中echo输出查询时,它的格式与我预期的完全相同。也就是说,我们的框架并没有以某种意想不到的方式逃脱它。

我假设我们的框架在某个地方覆盖了一些PHP设置,从而导致了这种行为的差异,但我在谷歌上搜索它可能是什么并不幸运。我发现了这篇文章,这似乎是一个很好的开始,但似乎也不太符合我所看到的,因为我在同一个MySQL设置上得到了不同的行为。

任何指向正确方向的指针都将不胜感激!

作为调试向导:

当您将查询echo输出时,您可能需要确保您确实看到了数据——例如,如果您在网页上echo,请确保将htmlspecialchars()应用于字符串。否则,您可能无法发现一些变化。

LIKE不是全文搜索,这就是为什么问题标题是错误的,而且你找到的那篇文章可能与你的问题无关。

关于您的问题,请打开您的my.cnf并启用查询日志:

[mysqld]
#Set General Log
log = "C:/all_queries.log"

现在运行您的查询并查看日志。