Zend Framework 2向Oracle查询格式错误


Zend Framework 2 query to Oracle in incorrect format

我猜Zend用来构建sql语句的方式不适用于Oracle。

我在本地Windows PC上使用Oracle。我的PHP工作正确与Oracle已经与oci8扩展,我配置以下链接:

http://www.oracle.com/technetwork/articles/technote, php -即时- 084410. - html

我正在尝试连接ZF2与Oracle。我正在使用Zend网站上的教程代码:

http://zf2.readthedocs.org/en/latest/index.html userguide

这段代码可以完美地与mySQL一起工作。我正在更改数据库配置,改为使用Oracle。

下面是我的配置:

  • global.php

& lt;php

?

返回数组('db' => array(

)
    'driver'         => 'Oci8',
    'host'         => 'localhost/orcl',
),
'service_manager' => array(
    'factories' => array(
        'Zend'Db'Adapter'Adapter'
                => 'Zend'Db'Adapter'AdapterServiceFactory',
    ),
), 

);

?>

  • local.php(这个工作是因为我创建了一个用户'test'与Oracle的特权,我测试了这个用户与PHP和SQL脚本)

& lt;php

?

返回数组(

'db' => array(
  'username' => 'test',
  'password' => 'test',
), 

);

配置后,我尝试浏览url,错误出现说"表或视图不存在"。这是Oracle错误,这意味着Zend连接到Oracle,但在SQL语句中有错误。

调试后,我看到sql语句是:

SELECT "album".* FROM "album"

Oracle不希望接收双引号,因此出现错误

我尝试了一些硬代码在文件/Zend/Db/Adapter/Driver/Oci8/Statement.php,函数setSql行112,更改为:

public function setSql($sql)
    {
        $this->sql = $sql;
        $this->sql = "SELECT album.* FROM album";
        return $this;
    }

(去掉查询时的双引号)

工作! !

我想还有一些其他的配置,所以让Zend正常工作。

请帮帮我!谢谢你

同样的问题在这里:ZF2 IBM

解决方案:quote_identifiers == false:

   'db' => array(
    'driver' => $dbParams['driver'],
    'connection_string' => $dbParams['database'],
    'username' => $dbParams['username'],
    'password' => $dbParams['password'],
    'character_set' => $dbParams['character_set'],
    'platform_options' => array('quote_identifiers' => false)      
),