我有一个返回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.
如果没有数据库适配器/驱动程序,我可以在测试中获取字符串吗?
答案 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)