在SQL查询生成中使用字符串插值时,避免语法错误警告

dec*_*eze 7 phpstorm

当使用字符串插值,sprintf或者通常以任何形式动态创建SQL查询字符串时,PhpStorm通常会跳闸.例如:

$placeholders = join(', ', array_fill(0, count($ids), '?'));
$stmt = $db->prepare("SELECT * FROM foo WHERE bar IN ($placeholders)");
$stmt->execute($ids);
Run Code Online (Sandbox Code Playgroud)

要么:

$db->prepare(sprintf('INSERT .. (%s) ..', $foo))
Run Code Online (Sandbox Code Playgroud)

这些可以理解地在PhpStorm中触发某种SQL语法错误警告.有没有办法在没有彻底禁用SQL语言解析的情况下压制那些?

nem*_*m75 7

您可以通过以下两个步骤进行基本的SQL解析和语法检查:

  1. 将方言设置为Generic.在 File -> Settings设置如下:

PHPStorm设置, 放大

  1. 然后,禁用SQL dialect detection检查:

在此输入图像描述 放大

确认,Ok你已经完成了.

当然,如果PHPStorm可以通过变量替换来解析SQL字符串,那将是很好的,但遗憾的是,情况并非如此.


小智 7

我从Jetbrains博客找到了这个问题的明确答案:

http://blog.jetbrains.com/phpstorm/2014/11/database-language-injection-configuration/

你需要添加\%\w+.在您的工具>数据库部分中.

PhpStorm配置截图

  • 请注意,它似乎在`SELECT` 和`WHERE` 子句中工作,但在`WHERE` 之后的任何地方都失败(例如`ORDER BY`)。 (2认同)