PHPStorm警告WordPress插件查询中的占位符

eli*_*ide 5 mysql wordpress prepared-statement phpstorm

我有一个WordPress插件,我在PHPStorm编辑.当SQL方言设置为MySQL时,PHPStorm会在这样的查询中发现语法错误:

$foo = $wpdb->get_var(
           $wpdb->prepare(
               'SELECT `foo` FROM `some_table` WHERE `id` = %d',
               $bar
           )
       );
Run Code Online (Sandbox Code Playgroud)

具体来说,它会看到%d并抱怨此消息:

<expression> expected, got '%'
Run Code Online (Sandbox Code Playgroud)

当然,%d在WordPress查询中是一个完全合法的占位符.有没有办法配置PHPStorm接受这个?或者,我是否必须禁用对SQL语句的所有检查,如本答案中所示

请注意,我使用的是PHPStorm EAP 8(138.1751),其他占位符也是如此%s.

eli*_*ide 4

现在 PHPStorm 8 中可以实现这一点,正如 PHPStorm 官方博客上的这篇文章所解释的:

数据库语言注入配置

解决方法:

  • 转到工具 > 数据库
  • 确保与相关占位符匹配的正则表达式位于自定义参数列表中。默认情况下,列表包括\%\w+, 它将匹配%s,%d等。
  • 选中标记为“在其他语言字符串文字中使用”的框

PHPStorm 现在可以正确识别占位符,例如 WordPress 中使用的占位符。