0
我有以下DQL查询:问题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 = ?)
这是不正常的。它应该是而不是?:
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应该自动执行此操作。为什么没有发生?
其实我用这样的:'$ ID = 11; $ query = Doctrine_Query :: create() - > select('p.genre') - > from('Profile p') - > where('sf_guard_user_id =?',$ ID);'但是resut是同样的错误(显示问号:'SELECT p.id AS p__id,p.genre AS p__genre FROM profile p WHERE(p.sf_guard_user_id =?)')。我没有得到这个...为什么在DQL中,串联工作正常并且'?'没有? –
@Ek Kosmos:你应该阅读如何准备语句工程http://stackoverflow.com/questions/54980/how-do-prepared-statements-work找到更多的教程。你会得到我要求的 –
问题是用户11的配置文件不在数据库中。因为如果我检查用户10是否正常工作(问号被替换)。然而这是奇怪的事情,为什么如果用户不存在问号不被替换?学说应该发送某种错误,但唯一的是他没有改变问号...... –