如何将常量字符串数组字段导入PDO / D7 db_query()?

时间:2013-04-20 23:02:18

标签: pdo drupal-7

首先发布在这里:)

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

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

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

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

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

任何建议最受欢迎...包括a)这是否也是PHP本身的问题,b)如何将此作为错误报告给适当的权限,c)任何有关变通方法的创意,假设它是真实的错误。

谢谢!

1 个答案:

答案 0 :(得分:1)

可能不是PDO / Drupal问题,而是mysql问题 似乎服务器正在ANSI_QUOTES SQL mode中运行:

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限制?