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

时间:2014-08-30 20:25:54

标签: 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
           )
       );

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

<expression> expected, got '%'

当然,%d是WordPress查询中完全合法的占位符。有没有办法配置PHPStorm接受这个?或者我是否必须按照this answer

中的建议禁用对SQL语句的所有检查

请注意,我使用的是PHPStorm EAP 8(138.1751),其他占位符(例如%s)也会发生同样的情况。

2 个答案:

答案 0 :(得分:4)

现在可以在PHPStorm 8中使用,正如官方PHPStorm博客上的这篇文章所解释的那样:

Database Language Injection Configuration

要解决它:

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

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

答案 1 :(得分:2)

Nope - %d从SQL的角度来看是无效的语法(ANY目前支持的方言)。 WI-3672WI-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方言显示许多警告/错误(这不是实际错误),则可以回归。