首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从测试中的Zend\Db\ SQL \获取Sql字符串

问从测试中的Zend\Db\ SQL \获取Sql字符串
EN

Stack Overflow用户
提问于 2013-12-03 22:13:58
回答 2查看 4.9K关注 0票数 1

我有一个返回Zend\Db\Sql\Select对象的类。

在使用phpunit的测试中,我尝试通过

代码语言:javascript
复制
var_dump($select->getSqlString());

但我收到一条错误信息:

代码语言:javascript
复制
Attempting to quote a value without specific driver level 
support can introduce security vulnerabilities in a 
production environment.

在我的phpunit引导程序中定义

代码语言:javascript
复制
putenv('APP_ENV=test');

我也试过

代码语言:javascript
复制
var_dump($select->getSqlString(new \Zend\Db\Adapter\Platform\Mysql()));

但也会有类似的错误

代码语言:javascript
复制
Attempting to quote a value in Zend\Db\Adapter\Platform\Mysql
without extension/driver support can introduce security
vulnerabilities in a production environment.

在没有数据库适配器/驱动程序的情况下,我怎样才能在测试中获得字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 03:29:55

代码语言:javascript
复制
$adapter = new \Zend\Db\Adapter\Adapter ([
 'driver'         => 'Pdo',
 'dsn'            => 'sqlite:./test.sql',
]);

$where = new \Zend\Db\Sql\Where();
$where->orPredicate (new \Zend\Db\Sql\Predicate\Like('table.cat1', 1))
->orPredicate (new \Zend\Db\Sql\Predicate\Like('cat2', 2));

$sql = new \Zend\Db\Sql\Sql ($adapter);
$select = $sql->select ();
$select->from ('table')->where ($where);
echo $sql->getSqlStringForSqlObject ($select);
票数 3
EN

Stack Overflow用户

发布于 2016-03-03 09:19:01

@acond

代码语言:javascript
复制
$sql->getSqlStringForSqlObject ($select)

被废弃,更好的利用

代码语言:javascript
复制
$sql->buildSqlString($select)

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20362801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档