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

时间:2013-12-03 22:13:59

标签: zend-framework2 phpunit

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

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

获取sql字符串
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.

如果没有数据库适配器/驱动程序,我可以在测试中获取字符串吗?

2 个答案:

答案 0 :(得分:2)

$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);

答案 1 :(得分:1)

@acond 以来

$sql->getSqlStringForSqlObject ($select)
 不推荐使用,更好用
$sql->buildSqlString($select)