我有以下 DQL 查询:
$query = Doctrine_Query::create()
->select('p.genre')
->from('Profile p')
->where('sf_guard_user_id = ?', 11);
如果我使用 $sql = $query->getSqlQuery();
返回 SQL 语法,我得到:
SELECT p.id AS p__id, p.genre AS p__genre FROM profile p WHERE (p.sf_guard_user_id = ?)
这不正常。应该是11而不是?:
SELECT p.id AS p__id, p.genre AS p__genre FROM profile p WHERE (p.sf_guard_user_id = 11)
如果我写:
$query = Doctrine_Query::create()
->select('p.genre')
->from('Profile p')
->where('sf_guard_user_id = ' . 11);
SQL 语法正确。
通常 DQL 应自动执行此操作。为什么没有发生?
最佳答案
这就是准备好的语句的工作原理。值将绑定(bind)在数据库服务器上,因此学说无法通过查询显示真实值。
如果您使用准备好的语句而不是真正的值,Doctrine 将显示一个问号。
看看它是如何描述的 here
关于mysql - 问号DQL是不是没有考虑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6453121/