LIKE表达式中的MySQL连字符

时间:2011-06-21 21:59:33

标签: php mysql escaping

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

我正在运行看起来像这样的查询

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

,我想从表中返回记录,其中列包含文本“word-anotherword”。 (列是一个longtext字段)。

当我在phpMyAdmin中运行此查询时,我得到了预期的结果。但是当我从框架内部运行它时,我得不到任何结果。我在一个单独的.php文件中运行它,使用mysql_linkmysql_query来运行查询,并且行为也符合预期。

当我echo在框架中传递给mysql_query之前直接查询它时,它的格式与我期望的相同。 I.E.我们的框架并没有以某种意想不到的方式逃避它。

我假设我们的框架覆盖某些PHP设置,导致行为上的这种差异,但我没有运气谷歌搜索它可能是什么。我找到了this article,这似乎是一个很好的开始,但似乎并不适合我所看到的,因为我在相同的MySQL设置上得到了不同的行为。

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

2 个答案:

答案 0 :(得分:2)

作为调试抬头:

当您echo查询时,您可能需要确保实际查看数据 - 例如如果您echo进入网页,请确保将htmlspecialchars()应用于字符串。否则你可能不会发现一些变化。

答案 1 :(得分:1)

LIKE不是全文搜索,这就是问题标题错误的原因,可能是您发现的文章与您的问题无关。

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

[mysqld]

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

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