Php Zend Framework 2查询中的双引号
我正在使用Zend Framework 2进行应用程序开发。整个应用程序基于IBMInformix数据库 数据库配置如下所示: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' =>
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。。