我想Zend用于构建sql语句的方式不适用于Oracle。Zend Framework 2以不正确的格式向Oracle查询
我在我的本地Windows PC中使用Oracle。 我的PHP工作正确与Oracle已经与OCI8扩展,我配置了下面的链接如下:
http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html
我想ZF2与Oracle连接。我使用的教程代码在Zend公司的网站:
http://zf2.readthedocs.org/en/latest/index.html#userguide
此代码工作完全与MySQL。我将数据库配置更改为使用Oracle。
下面是我的配置:
- global.php
< PHP
返回阵列( '分贝'=>数组(
'driver' => 'Oci8', 'host' => 'localhost/orcl', ), 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), ),
);
?>
- local.php(这工作,因为我创建了权限的用户 '测试' 在甲骨文,我测试了PHP和SQL脚本,该用户)
<?PHP
回报阵列(
'db' => array( 'username' => 'test', 'password' => 'test', ),
);
配置完成后,我尝试浏览网址,错误出现,说“表或视图不存在”。这是Oracle错误,它表示Zend连接到Oracle,但SQL语句中出现错误。
一些调试后,我看到了sql语句是:
SELECT "album".* FROM "album"
这是错误的,因为甲骨文不愿意接受双引号。
我试图在文件/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正常工作。
请帮帮我!谢谢
你试过表名称设置为大写?似乎来自一个快速的谷歌几次。 – 2013-04-04 10:24:07
嗨,我试过了。我认为问题在于Oracle不会收到双引号,但是Zend构建的声明有这些。 – 2013-04-04 10:37:39
@AydinHassan:嗨,你是对的。将所有表名称和字段名称更改为大写字母将使代码生效!谢谢 – 2013-04-08 02:33:58