我有以下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应该自动执行此操作。为什么不发生?

最佳答案

这是准备好的语句的工作方式。值将绑定到数据库服务器上,因此该学说不能显示查询的真实值。

如果您使用准备好的语句而不是实际值,则教义将显示一个问号。

查看它如何描述here

关于mysql - 不考虑问号DQL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6453121/

10-13 02:37