我有一个WordPress插件,我在PHPStorm中编辑。当SQL方言设置为MySQL时,PHPStorm会在这样的查询中发现语法错误:
$foo = $wpdb->get_var(
$wpdb->prepare(
'SELECT `foo` FROM `some_table` WHERE `id` = %d',
$bar
)
);
具体来说,它会看到%d
并抱怨此消息:
<expression> expected, got '%'
当然,%d
是WordPress查询中完全合法的占位符。有没有办法配置PHPStorm接受这个?或者我是否必须按照this answer?
请注意,我使用的是PHPStorm EAP 8(138.1751),其他占位符(例如%s
)也会发生同样的情况。
答案 0 :(得分:4)
现在可以在PHPStorm 8中使用,正如官方PHPStorm博客上的这篇文章所解释的那样:
Database Language Injection Configuration
要解决它:
\%\w+
,其中包含%s
,%d
等。PHPStorm现在可以正确识别WordPress中使用的占位符。
答案 1 :(得分:2)
Nope - %d
从SQL的角度来看是无效的语法(ANY目前支持的方言)。 WI-3672和WI-2324票证仍然有效。
但PhpStorm v8现在支持$var
(如果您可以使用它而不是%
语法) - http://youtrack.jetbrains.com/issue/WI-2450
由于它是WordPress的具体问题,我很难给你任何真正的建议(特别是因为我自己不使用WordPress),不包括that one。
但一般来说,你可以使用特定数据库引擎支持的原生占位符(检查&#34;例子&#34; http://php.net/manual/en/pdo.prepare.php部分):
?
:id
我不确定这是否可以应用于WordPress开发。
<强> P.S。强>
Generic
是新的Keywords only
方言 - 如果使用正确的SQL方言显示许多警告/错误(这不是实际错误),则可以回归。