当使用字符串插值,sprintf
或通常任何形式的动态创建SQL查询字符串时,PhpStorm通常会跳闸。例如:
$placeholders = join(', ', array_fill(0, count($ids), '?'));
$stmt = $db->prepare("SELECT * FROM foo WHERE bar IN ($placeholders)");
$stmt->execute($ids);
或:
$db->prepare(sprintf('INSERT .. (%s) ..', $foo))
这可以理解地在PhpStorm中触发某种SQL语法错误警告。有没有办法在没有彻底禁用SQL语言解析的情况下压制那些?
答案 0 :(得分:7)
我从Jetbrains博客找到了这个问题的明确答案:
http://blog.jetbrains.com/phpstorm/2014/11/database-language-injection-configuration/
您需要添加\%\w+
。在您的工具>数据库部分。
答案 1 :(得分:6)
您可以按照以下两个步骤进行基本的SQL解析和语法检查:
答案 2 :(得分:1)
我提出的唯一解决方案是在SQL之前添加换行符,如:
$sql = "\nINSERT INTO ...";
PhpStorm认为它现在是一个普通的字符串,不会尝试将其解析为SQL。