PhpStorm - 禁用一行的SQL检查

时间:2018-01-08 09:14:07

标签: phpstorm code-inspection

我正在使用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 */

我用Google搜索并找到this页面,但没有任何选项似乎有帮助。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

\%\w+模式添加到Settings/Preferences | Tools | Database | User Parameters - 它会告诉IDE将此类%s视为代码的动态/外部部分,而不是实际的SQL。

例如:

enter image description here

<强> P.S。 默认情况下,有一天会在PhpStorm中提供此类模式。

https://youtrack.jetbrains.com/issue/WI-39271 - 观看此机票(星级/投票/评论)以获得有关任何进展的通知。

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

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

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

enter image description here

注意:如果您正在连接此类字符串或执行其他操作,则可能无效。