我正在使用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页面,但没有任何选项似乎有帮助。
有什么想法吗?
答案 0 :(得分:5)
将\%\w+
模式添加到Settings/Preferences | Tools | Database | User Parameters
- 它会告诉IDE将此类%s
视为代码的动态/外部部分,而不是实际的SQL。
例如:
<强> 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)';
注意:如果您正在连接此类字符串或执行其他操作,则可能无效。