我有一个WordPress插件,我正在编辑PHPStorm。 PHPStorm在这样的查询发现语法错误时的SQL方言设置到MySQL:PHPStorm在WordPress插件查询占位符上的警告
$foo = $wpdb->get_var(
$wpdb->prepare(
'SELECT `foo` FROM `some_table` WHERE `id` = %d',
$bar
)
);
具体来说,它认为%d
和与此消息抱怨:
<expression> expected, got '%'
当然,%d
是一个完全合法WordPress查询中的占位符。有没有办法配置PHPStorm来接受这个?或者我必须禁用SQL语句上的所有检查,如this answer中所建议的那样?
请注意,我正在使用PHPStorm EAP 8(138.1751),而其他占位符(如%s
)也会发生同样的情况。
是的,我知道这是非标准的SQL语法。我认为这是WordPress在MySQLi和PDO出现之前处理准备好的语句的尝试。但[这是我现在坚持](http://codex.wordpress.org/Class_Reference/wpdb#Placeholders),除非我使用PDO或MySQLi推出我自己的数据库连接。使用类似'$ var'的文字变量将不起作用,因为它阻止了任何类型的参数化(我将不得不添加比当前更多的数据验证,转换和转义)。而“关键字只有”不再是一种方言,所以我甚至不确定我能否使用它。 – 2014-08-30 21:33:58
尝试“通用”而不是“仅关键字”。 – LazyOne 2014-08-30 22:36:06
那么,我100%肯定我曾尝试过,但显然不是。我不得不关闭“SQL方言检测”代码检查,以使PHPStorm对我使用“Generic”作为方言感到高兴。不幸的是,这似乎基本上禁用*所有* SQL检查;它认为'SELECT WHERE foo FROM bar'看起来很好。看起来这是我现在可以做的最好的,但是,所以你把你的评论添加到你的答案中,我会接受它。 – 2014-08-30 22:57:32