【问题标题】:Get PhpStorm to understand advanced SQL built in php code获取 PhpStorm 了解 php 代码中内置的高级 SQL
【发布时间】:2017-06-11 05:11:30
【问题描述】:
function getCities($countryId = NULL) {
   $sql = "SELECT * FROM city";
   if ($countryId) {
       $sql .= <<<SQL
       WHERE countryId=$countryId
SQL;
   }
   $db->query($sql)
   ....
}

我经常编写类似上述函数的代码。我使用 PhpStorm 并将其连接到我的数据库,因此它可以在 $sql 上为我提供代码帮助,但仅限于第一部分。通过在 if 语句中的部分使用 HEREDOC,它将正确地为 SQL 着色,但我无法获得任何代码帮助。这有可能吗?或者有没有其他方法可以在 php 代码中构建 SQL,以便 PhpStorm 为我提供帮助?

【问题讨论】:

  • 有时我有一个单独的 sql 文件并在 SQL 文件中编写代码,这样 PHPStorm 就不会在切换任何过渡语言(如 PHP)时感到困惑,然后一旦它完成我只是复制并粘贴到 PHP 代码中。只有在构建块语句而不是动态语句时,这才会真正起作用....
  • 我认为没有办法,但也许您可以在 youtrack.jetbrains.com 提交建议。这似乎是一个相当困难的问题,期望它找出这段代码片段是之前开始的 SQL 查询的延续,以便它知道要在哪个表中搜索列名。
  • 我不会称其为高级,而是过于复杂且容易发生 SQL 注入。

标签: php sql validation phpstorm heredoc


【解决方案1】:

至少在 v2019 中,您可以在 PHPStorm 中的 Heredoc SQL 中获得一些帮助。

我有自动完成和建议,并且表和列名以及 SQL 语法都经过验证。
为此,我必须做到以下几点:

  1. 连接到数据库在数据库工具窗口(查看 | 工具窗口 | 数据库)中使用 IN PHPStorm
    详细说明:https://www.jetbrains.com/help/phpstorm/managing-data-sources.html
  2. 配置 SQL 方言 在文件 | 下的用户中设置 |语言和框架 | SQL 方言
    详情在这里:https://www.jetbrains.com/help/phpstorm/settings-languages-sql-dialects.html

特别酷:表名和列名相互关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 2020-05-13
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多