Php Zend Framework 2查询中的双引号

Php Zend Framework 2查询中的双引号,php,zend-framework2,zend-db,informix,Php,Zend Framework2,Zend Db,Informix,我正在使用Zend Framework 2进行应用程序开发。整个应用程序基于IBMInformix数据库 数据库配置如下所示: return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'dsn:connection:string', 'driver_options' => array( ), ), 'service_manager' =>

我正在使用Zend Framework 2进行应用程序开发。整个应用程序基于IBMInformix数据库

数据库配置如下所示:

return array(
'db' => array(
    'driver'         => 'Pdo',
    'dsn'            => 'dsn:connection:string',
    'driver_options' => array(
    ),
),
'service_manager' => array(
    'factories' => array(
        'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
    ),
),
);
当通过实例化Zend\Db\Sql\Select对象来查询数据库时,查询总是被引用,这不应该发生,因为Informix不能再处理查询了

预期查询字符串:

SELECT column1, column2 FROM table
SELECT "column1", "column2" from "table"
Zend生成的查询字符串:

SELECT column1, column2 FROM table
SELECT "column1", "column2" from "table"
经过一些研究,我发现了类似的情况,但两种解决方案都不可接受。这里的问题是,我必须传递一个Zend\Db\Sql\Select对象,因此无法通过$dbAdapter->query($Sql)使用原始Sql查询数据库

是否有办法禁用报价(例如在数据库配置中)

如果您能提供一些TIPP,我们将不胜感激。
提前感谢

如果希望Informix识别该符号,则需要设置环境变量DELIMIDENT,以便服务器知道将此类双引号字符串视为标识符,而不是字符串

有多种方法可以做到这一点;哪一个最好取决于您的系统。看起来您使用的是Windows而不是Unix。有一个SETNET32实用程序可以设置环境变量。在Unix上(不确定Windows),您可以将
delimient 1
添加到
$HOME/.informix
$INFORMIXDIR/etc/informixrc
(常规,但应该可以)。可以通过shell设置环境变量;您可以将其指定为连接属性


Windows不是我的专业领域。

您可以禁用引用标识符。像这样

use Zend\Db\Adapter\Adapter as DbAdapter;

// DB2 Connection
$adapter = new DbAdapter(array(
    'driver' => 'IbmDb2',
    'database' => '*LOCAL',
    'username' => '',
    'password' => '',
    'driver_options' => array(
        'i5_naming' => DB2_I5_NAMING_ON,
        'i5_libl' => 'LIB1 LIB2 LIB3'
    ),
    'platform_options' => array('quote_identifiers' => false)
);

摘自Zend Framework文档。

为什么要使用Select生成SQL,然后运行原始查询?运行原始查询或使用Select builder为您执行它…您理解错了-我写道我必须传递Zend\Db\Sql\Select对象,因此通过原始查询查询数据库是没有选择的。答案可能在这里,谢谢sroes-这以正确的方式指导了我的查询。在查询级别,它是self。。