Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 Zend Framework 2对Oracle的查询格式不正确_Php_Oracle_Zend Framework2 - Fatal编程技术网

Php Zend Framework 2对Oracle的查询格式不正确

Php Zend Framework 2对Oracle的查询格式不正确,php,oracle,zend-framework2,Php,Oracle,Zend Framework2,我猜Zend用来构建sql语句的方法不适用于Oracle 我正在本地Windows PC中使用Oracle。 我的PHP已使用oci8扩展在Oracle上正常工作,我配置了以下链接: 我正在尝试将ZF2与Oracle连接。我正在使用Zend网站上的教程代码: 这段代码与mySQL完美结合。我正在将数据库配置改为使用Oracle 以下是我的配置: global.php 数组( )) ?> php(这项工作是因为我创建了一个在Oracle上具有权限的用户“测试”,我使用php和SQL脚本测

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

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

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

这段代码与mySQL完美结合。我正在将数据库配置改为使用Oracle

以下是我的配置:

  • global.php
<?php

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

))

?>

  • php(这项工作是因为我创建了一个在Oracle上具有权限的用户“测试”,我使用php和SQL脚本测试了这个用户)
<?php

返回数组(

))

配置后,我尝试浏览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正常工作

请帮帮我!谢谢你

这里也有同样的问题:

解决方案:quote_标识符==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)      
),
这里也有同样的问题:

解决方案:quote_标识符==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)      
),

您是否尝试过将表名设置为大写?似乎在快速的谷歌搜索中出现过几次。您好,我尝试过。我认为问题在于Oracle没有收到双引号,但Zend build语句有这些引号。@AydinHassan:您好,您是对的。将所有表名和字段名更改为大写将使代码正常工作!谢谢尝试将表名设置为大写?似乎在快速的谷歌搜索中出现过几次。您好,我尝试过。我认为问题在于Oracle没有收到双引号,但Zend build语句有这些引号。@AydinHassan:您好,您好。将所有表名和字段名更改为大写将使代码正常工作!谢谢
   '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)      
),