0

第一次在这里发帖:)

这是一个有效的 MySQL 查询:SELECT "'a','b'" AS FieldStrArray;

(要在 PHP 中作为字符串输入,请记住双引号前的反斜杠。)

至少在 Drupal 7 的 db_query() 中,这会产生一个致命的 PDO 异常,抱怨这'a','b'不是一个已知字段。

我的问题:如何解决 db_query()/PDO 的这种明显限制?

(是的,我需要一个常量字符串数组作为字段结果之一。这是问题的最小复制...... :))

任何建议都非常受欢迎......包括a)这是否也是PHP本身的问题,b)如何将此作为错误报告给适当的当局,c)假设它是一个真正的错误的解决方法的任何创造性想法。

谢谢!

4

1 回答 1

1

这可能不是 PDO/Drupal 问题,而是 mysql 问题。
服务器似乎在ANSI_QUOTES SQL 模式下运行

Treat “"” as an identifier quote character (like the “`” quote character) 
and not as a string quote character. You can still use “`” to quote identifiers 
with this mode enabled. With ANSI_QUOTES enabled, you cannot use double quotation
marks to quote literal strings, because it is interpreted as an identifier. 

因此,只需接受您的建议并转义单引号即可:

SELECT '\'a\',\'b\'' AS FieldStrArray

虽然我想知道为什么人们需要从 SQL 查询中获得这样的东西。一些 Drupal API 限制?

于 2013-04-21T02:06:04.083 回答