1. ホーム
  2. php

[解決済み] Doctrine - 準備されたステートメントだけでなく、実際のSQLをプリントアウトするには?

2022-04-15 15:57:05

質問

PHP の ORM である Doctrine を使っています。このようなクエリを作成しています。

$q = Doctrine_Query::create()->select('id')->from('MyTable');

そして、この関数の中で、様々なwhere句などを適宜追加しています。

$q->where('normalisedname = ? OR name = ?', array($string, $originalString));

その後、前 execute() -そのクエリオブジェクトを検証するために、生のSQLを出力して、このようにしたいのです。

$q->getSQLQuery();

しかし、それは準備されたステートメントをプリントアウトするだけで、完全なクエリをプリントアウトするわけではありません。MySQL に送信される内容を確認したいのですが、代わりにプリペアドステートメントがプリントアウトされ、その中には ? 's. 完全な」クエリを確認する方法はありますか?

解決方法は?

Doctrine は本当の SQL クエリをデータベースサーバーに送信しているわけではありません: 実際にはプリペアドステートメントを使っています。

  • ステートメントを送信し、それを準備する(これは $query->getSql() )
  • そして、パラメータを送信します。 $query->getParameters() )
  • とプリペアドステートメントを実行する

これは PHP 側には決して "real" の SQL クエリが存在しないことを意味し、Doctrine はこれを表示することができません。