PhpStorm - Disable SQL inspection for one line

て烟熏妆下的殇ゞ 提交于 2020-02-15 09:14:50

问题


I am using the ZendDb database adapter which doesn't bring all the tweaks SQL can do. For example if I want to do a REPLACE INTO I would have to code it like this:

$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);

The problem is that PhpStorm tells me that the %s is an error inside the SQL.

When I try hotfixing it with Alt + Enter I don't get the option to suppress the inspection for this line.

I' need something like this:

/** @noinspection SqlInspection */

I googled and found this page but nothing of the options seemed to help.

Any ideas?


回答1:


Add \%\w+ pattern to Settings/Preferences | Tools | Database | User Parameters -- it will tell IDE to treat such %s as dynamic/external part of the code instead of actual SQL.

For example:

P.S. One day such pattern will be provided by default in PhpStorm.

https://youtrack.jetbrains.com/issue/WI-39271 -- watch this ticket (star/vote/comment) to get notified on any progress.


If you need an actual suppression .. then the most effective way is to treat the string as Plain Text instead of autodetected SQL.

For this, just place /** @lang text*/ just before the string, e.g.

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

NOTE: may not work if you are concatenating such string or perform other manipulations in place.



来源:https://stackoverflow.com/questions/48147181/phpstorm-disable-sql-inspection-for-one-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!