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; ( 'sf_guard_user_id =?'、$ ID); 'しかし、resutは以下のようになります:$ query = Doctrine_Query :: create() - > select( 'p.genre') - > from( 'Profile p') - >同じエラー(疑問符を表示しています: 'SELECT p.id AS p __id、p.genre AS p__genre FROM profile p WHERE(p.sf_guard_user_id =?)')。私はこれを取得しません...なぜDQLの連結でOKと '? ' –
@Ek Kosmos:準備文がどのように動作するのかを知る必要がありますhttp://stackoverflow.com/questions/54980/how-do-prepared-statements-workこれについてもう少しチュートリアルを見つけてください。あなたは私が求めているものを得るでしょう –
問題は、ユーザー11のプロファイルがデータベースにないことでした。ユーザー10が正しく動作しているかどうかを確認すると(疑問符が置き換えられます)。しかし、これは奇妙なことですが、なぜユーザーが存在しない場合、疑問符は置き換えられませんか? Doctrineはある種のエラーを出さなければなりませんが、唯一のことは疑問符を変更していないということだけでした... –