2017-02-23 404 views
1

我们用它扩展mysqli的工作类,并增加了另一种语法准备语句,是这样的:PhpStorm:添加SQL方言

<?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方言,我可以添加这个特定的语法?

+0

你做的是什么声音就像PDO语法(以一个额外的冒号和类型的附属物),这PhpStorm识别。为什么不使用PDO而不是MySQLi? – Martin

+0

我知道它看起来像PDO,但我们也有一些PDO中不允许的其他语法更改。 –

+0

@martin如果添加新的自定义SQL方言是不可能的,是的,那将是最好的答案。 –

回答

3

有没有办法声明一个新的SQL方言,我可以添加这个特定的语法?

您不能像这样添加自己的SQL语言(通过某些GUI无法配置)。

我的意思是:是的,你可以,但是你必须把它作为Java插件编写,做所有需要的东西 - 它会起作用。


,您有在这里有无关SQL方言问题 - 你是不是提供新的关键字或实际查询语法(或类似的东西)。

您代码中的问题在参数:field_value:s vs :field_value)的自定义语法中。

这可以指定自己的语法在Settings/Preferences | Tools | Database | User Parameters来解决:

  • 模式::(\w+\:[d|i|s])
  • 范围:(根据您的代码示例)PHP &的MySQL在非常至少
  • 其中: in literals at least

重要提示:规则的顺序也很重要。

这里是我做过什么,它是如何工作的:

enter image description here

+0

谢谢,它完美的作品! –