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是否正常工作(問號被替換)。然而這是奇怪的事情,爲什麼如果用戶不存在問號不被替換?學說應該發送某種錯誤,但唯一的是他沒有改變問號...... –