我们使用一个在工作中扩展Mysqli的类,它为预准备语句添加了另一种语法,如:
<?php
$req = MySQLiWrapperClass::getInstance()->prepare('
INSERT INTO
table
SET
field = :field_value:s
')
->bindNamedValue('field_value', 'stackOverflow')
->execute();
然后,在执行查询之前,该类将:field_value:s
转换为?
。
问题是,当在PhpStorm中使用MySQL SQL方言时,此语法将触发错误,因为无法识别此语法。
有没有办法声明一个新的SQL Dialect,我可以在其中添加这个特定的语法?
答案 0 :(得分:4)
有没有办法声明一个新的SQL Dialect,我可以在其中添加这个特定的语法?
您不能像那样添加自己的SQL Dialect(不能通过某些GUI配置)。
我的意思是:是的,你可以,但你必须将它编码为Java插件,做所有需要的东西 - 它会起作用。
您在这里遇到的问题与SQL Dialect 无关 - 您没有提供新的关键字或实际的查询语法(或类似的东西)。
您的代码中的问题是参数的自定义语法(:field_value:s
vs :field_value
)。
这可以通过在Settings/Preferences | Tools | Database | User Parameters
指定您自己的语法来解决:
:(\w+\:[d|i|s])
literals
至少重要:规则的顺序也很重要。
以下是我的所作所为及其运作方式: