Zend framework2 从测试中的Zend\Db\SQL\Select对象获取SQL字符串

Zend framework2 从测试中的Zend\Db\SQL\Select对象获取SQL字符串,zend-framework2,phpunit,Zend Framework2,Phpunit,我有一个类,它返回一个Zend\Db\Sql\Select对象 在使用phpunit的测试中,我尝试通过 var_dump($select->getSqlString()); 但我收到一条错误消息: Attempting to quote a value without specific driver level support can introduce security vulnerabilities in a production environment. 在我定义的phpu

我有一个类,它返回一个
Zend\Db\Sql\Select
对象

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

var_dump($select->getSqlString());
但我收到一条错误消息:

Attempting to quote a value without specific driver level 
support can introduce security vulnerabilities in a 
production environment.
在我定义的phpunit引导程序中

putenv('APP_ENV=test');
我也试过了

var_dump($select->getSqlString(new \Zend\Db\Adapter\Platform\Mysql()));
但是得到了一个类似的错误

Attempting to quote a value in Zend\Db\Adapter\Platform\Mysql
without extension/driver support can introduce security
vulnerabilities in a production environment.
在没有数据库适配器/驱动程序的情况下,如何在测试中获取字符串?

@acond
$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);
自从
$sql->getSqlStringForSqlObject($select)
已弃用,更好地使用
$sql->buildSqlString($select)
$sql->buildSqlString($select)
@acond 自从
$sql->getSqlStringForSqlObject($select)
已弃用,更好地使用
$sql->buildSqlString($select)

$sql->buildSqlString($select)

有效,谢谢!我在你的帖子中为适配器和Sql添加了名称空间。很好用,谢谢!我在您的帖子中添加了适配器和Sql的名称空间。