CDb连接和大括号

谢尔盖

为我的Yii应用程序做一个小组件。代码

$connection = Yii::app()->getComponent('db');
$sql = 'SELECT * FROM {{settings}}';
$command = $connection->createCommand($sql); 

引发错误

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以找到在第1行的“ {settings}}”附近使用的正确语法。执行的SQL语句为:SELECT * FROM {{settings}}

告诉我出了什么问题。我不能使用花括号来转义表名吗?

谢谢

更新:

看来这是Yii Query Bulduer错误。

如果我使用此配置

'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),

注意空的tablePrefix-一切正常。

删除此键,我遇到了上述问题。但是我不需要表前缀。我只想使用一个可以与前缀一起使用的组件,而不仅仅是在我的应用程序中。

与一个

抱歉,我刚刚意识到您的更新实际上是在说什么。

如果我使用此配置

'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),

注意空的tablePrefix-一切正常。

是的,当然可以。您已经定义tablePrefix为一个空字符串(而且,正如我已经指出的那样自v.1.1.6版本开始支持空字符串前缀)。

删除此键,我遇到了上述问题。但是我不需要表前缀。我只想使用一个可以与前缀一起使用的组件,而不仅仅是在我的应用程序中。

如果您未定义tablePrefix,则将其与nulltrue进行比较(并且正如我之前所指出的,CDbCommand::setText() 替换非null前缀):

if($this->_connection->tablePrefix!==null && $value!='')
    $this->_text=preg_replace('/{{(.*?)}}/',$this->_connection->tablePrefix.'\1',$value);

因此,您必须自己替换大括号,否则必须显式设置tablePrefix为空字符串。如果您无法控制配置文件,但要确保tablePrefix已设置,则可以手动覆盖它:

if (!isset($connection->tablePrefix)) $connection->tablePrefix = '';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CDb连接和大括号

来自分类Dev

如何在 IntelliJ 中显示连接左大括号和右大括号的线?

来自分类Dev

如何用大括号和大括号推动值

来自分类Dev

字符串连接中带和不带大括号的可选

来自分类Dev

用大括号加入importxml和importhtml

来自分类Dev

findBy()和findAll()产生空的大括号

来自分类Dev

空大括号和bash中的分号

来自分类Dev

`seq` 和 bash 大括号扩展失败

来自分类Dev

命令替换中大括号和方括号的区别 - ${} 和 $()

来自分类Dev

Shell脚本中大括号{}和方括号()之间的区别

来自分类Dev

斯卡拉大括号和括号之间的实际区别

来自分类Dev

正则表达式匹配括号和大括号

来自分类Dev

在括号和大括号处分割字符串

来自分类Dev

如何交换方括号和大括号(karabiner)

来自分类Dev

斯卡拉大括号和括号之间的实际区别

来自分类Dev

定理中命题的大括号和圆括号之间的区别

来自分类Dev

无法使用C#和Selenium发送大括号或大括号

来自分类Dev

无法使用C#和Selenium发送大括号或大括号

来自分类Dev

将方括号和大括号替换为javascript或jquery中的圆括号

来自分类Dev

AngularJS:大括号中的字符串和变量

来自分类Dev

C中的圆形和大括号代码块

来自分类Dev

大括号(“ {”和“}”)的Python字符串格式问题

来自分类Dev

从以逗号和大括号分隔的变量中获取日期

来自分类Dev

大括号和变量中的引号之间的区别

来自分类Dev

AngularJS:大括号中的字符串和变量

来自分类Dev

bash如何区分大括号扩展和命令分组?

来自分类Dev

为什么我的 actionErrors 和 fieldErrors 用大括号 [] 显示?

来自分类常见问题

C ++ {* this}大括号内

来自分类Dev

大括号的全局顺序?

Related 相关文章

热门标签

归档