首先发布在这里:)
这是一个有效的MySQL查询:SELECT "'a','b'" AS FieldStrArray;
(要在PHP中输入字符串,请记住双引号前的反斜杠。)
至少在Drupal 7的db_query()中,这会产生一个致命的PDO异常,抱怨'a','b'
不是已知字段。
我的问题:我如何解决db_query()/ PDO的明显限制?
(是的,我需要一个常量字符串数组作为字段结果之一。这是问题的最小复制...... :))
任何建议最受欢迎...包括a)这是否也是PHP本身的问题,b)如何将此作为错误报告给适当的权限,c)任何有关变通方法的创意,假设它是真实的错误。
谢谢!
答案 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限制?