Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CDB连接和支架_Php_Mysql_Yii_Yii Components - Fatal编程技术网

Php CDB连接和支架

Php CDB连接和支架,php,mysql,yii,yii-components,Php,Mysql,Yii,Yii Components,为我的Yii应用程序制作一个小组件。 代码 引起错误 SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 在{settings}}附近使用正确语法的MySQL服务器版本 第1行。执行的SQL语句是:SELECT*FROM{{{settings} 告诉我哪里出了问题。我不能用大括号来转义表名 谢谢 更新: 这似乎是一个查询Bulduer错误 如果我使用这个配置 'db'=>array( 'connectionString' =

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

引起错误

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

告诉我哪里出了问题。我不能用大括号来转义表名

谢谢

更新:

这似乎是一个查询Bulduer错误

如果我使用这个配置

'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),
'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),
注意空桌子前缀-一切正常


拔下此键后,出现上述问题。但我不需要表前缀。我只想使用一个可以与前缀一起工作的组件,而不仅仅是在我的应用程序中。

对不起,我刚刚意识到你的更新实际上说明了什么

如果我使用这个配置

'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),
'db'=>array(
    'connectionString' => '...',
    'emulatePrepare' => ...,
    'username' => '...',
    'password' => '...',
    'charset' => '...',
    'tablePrefix' => ''
),
注意空桌子前缀-一切正常

是的,当然是这样:您已经将
tablePrefix
定义为空字符串(并且,正如我已经说过的,从v.1.1.6开始,空字符串前缀就一直存在)

拔下此键后,出现上述问题。但我不需要表前缀。我只想使用一个可以使用前缀的组件,而不仅仅是在我的应用程序中

如果您没有定义
tablePrefix
,那么将其与
null
进行比较将是正确的(正如我之前指出的,
CDbCommand::setText()
):

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

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

eggyal,我的表名是Settings我使用v1.1.14。只有在没有tablePrefix键的情况下才会发生错误。中提出了使用空表前缀的功能:这应该是在中修复的,这是。我无法解释为什么它不适合您,因为
CDbCommand::setText()
。你确定你用的是1.1.14吗?eggyal,是的,我的版本是1.1。14@Asped:这是Yii功能:请参阅。