PhpStorm - 禁用 SQL 检查一行

PhpStorm - Disable SQL inspection for one line

我正在使用 ZendDb 数据库适配器,它没有带来 SQL 可以做的所有调整。例如,如果我想做一个 REPLACE INTO,我就必须这样编码:

$SQL = sprintf('REPLACE INTO %s (id, NAME, cache_id, compile_id, content) VALUES  (%s, %s, %s, %s, %s)' %
        array(self::TABLE_NAME, $id, $name, $cache_id, $compile_id));
$this->_zdb->query($SQL);

问题是 PhpStorm 告诉我 %s 是 SQL.

中的一个错误

当我尝试使用 Alt + Enter 修复它时,我没有看到禁止检查这一行的选项。

我需要这样的东西:

/** @noinspection SqlInspection */

我用谷歌搜索并找到了 this 页面,但所有选项似乎都无济于事。

有什么想法吗?

\%\w+ 模式添加到 Settings/Preferences | Tools | Database | User Parameters -- 它会告诉 IDE 将 %s 视为代码的 dynamic/external 部分而不是实际 SQL.

例如:

P.S. 总有一天 PhpStorm 会默认提供这样的模式。

https://youtrack.jetbrains.com/issue/WI-39271 -- 观看这张票 (star/vote/comment) 以获得任何进展的通知。


如果您需要真正的抑制..那么最有效的方法是将字符串视为纯文本而不是自动检测 SQL。

为此,只需将 /** @lang text*/ 放在字符串之前,例如

$sql = /** @lang text*/'REPLACE INTO %s (id, NAME, cache_id, compile_id, content) VALUES (%s, %s, %s, %s, %s)';

注意:如果您连接此类字符串或就地执行其他操作,则可能无法正常工作。