问题:
我正在使用一个框架,该框架在很多时候提供像这样的查询:
$sql = "select $sArticleTable.* from table_A left join " .
"$sArticleTable on table_A.objectid=$sArticleTable.id " .
"where table_A.articlenid = $sArticleId " .
"and $sArticleTable.id is not null and " . $object->someMoreSQL() .
"order by table_A.sort";
如您所见,通过 $sArticleTable
变量插入一个表名称。尽管我非常讨厌这种编写 MySQL 语句的方式,但现在我对此无能为力。
这种编写语句的方式会阻止 PhpStorm 正确识别表名称,因此不会显示自动完成建议。
如何为 PhpStorm 变量 $sArticleTable
提供占位符值,以便它再次提供自动完成建议?
我已在设置中尝试了数据库 -> 用户参数
,但没有提示我输入占位符值。
我还知道我可以简单地将变量替换为正确的表名,调整 SQL,然后重新输入变量。但这似乎相当不专业,因为我认为 PhpStorm 可能会在这里提供解决方案。
此外,由于我已经在调整 SQL,所以我完全可以以更合适的方式重写该语句。对于这样一个相对较小的声明,我最终可能会这样做。然而,有更大的语句会占用大量时间来重写。
最佳答案
ATM机没有办法做到这一点。我在这里可能是错的......但它可能仅在最新的2017.2版本中支持Joomla(考虑到它们的特定语法)..但没有其他通用方式(它适用于表名或表名前缀)。
以下是有关此主题的一些相关票证 - 观看它们(星标/投票/评论)以获取有关任何进展的通知:
- https://youtrack.jetbrains.com/issue/WI-16205
- https://youtrack.jetbrains.com/issue/WI-26986
- https://youtrack.jetbrains.com/issue/WI-4123
P.S. 如果您不喜欢这样的 SQL 错误(IDE 显示它们的事实),那么您可以告诉 IDE 将此字符串视为纯文本(因此没有 SQL 颜色/错误)--将 /** @lang Text */
放在字符串左引号之前。
关于php - 为 SQL 参数提供占位符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45235048/