使用此代码:
$qb->select('user.id')->from('myVendor\CoreBundle\Entity\Users', 'user');
$expr = $qb->expr()->eq('user.email', '?1');
$qb->where($expr);
$qb->setParameter(1, 'testval');
我收到:
SELECT e0_.uid AS uid_0 FROM my_table e0_ WHERE e0_.email = ?
我也试过这个:
// ...
$expr = $qb->expr()->eq('user.email', ':test');
// ...
$qb->setParameter('test', 'testval');
PHP 5.5 | MSSQL | Doctrine \ Dbal 2.5.1 | Doctrine \ Orm 2.5.0
我做错了什么?
答案 0 :(得分:1)
Doctrine不替换查询本身的参数,它使用预准备语句,这意味着数据库服务器替换(和转义)参数。
这就是为什么在尝试显示查询时总是会看到参数化(带问号)查询的原因。