【发布时间】: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