1. ホーム
  2. php

[解決済み] PDO データベースクエリをデバッグするには?

2022-05-11 15:27:52

質問

PDO に移行する前は、PHP で文字列を連結することによって SQL クエリを作成していました。データベースの構文エラーが発生した場合、最終的な SQL クエリ文字列をエコーし、データベース上でそれを試し、エラーが修正されるまでそれを調整し、それからそれをコードに戻すことができました。

プリペアドPDOステートメントはより速く、より良く、より安全ですが、1つのことが私を悩ませます。構文に関するエラーが Apache ログまたはカスタムログファイル (私はエラーのログを catch ブロックの中でエラーを記録します)、その原因となったクエリを見ることができません。

PDO からデータベースに送られた完全な SQL クエリをキャプチャして、ファイルに記録する方法はありますか?

どのように解決するのですか?

データベースのログを見る

とはいえ Pascal MARTIN が正しいのは、PDO が完全なクエリを一度にデータベースに送らないということです。 ryeguy の提案したDBのロギング機能を使うことで、実際にデータベースによって組み立てられ、実行された完全なクエリを見ることができました。

以下はその方法です。 (これらの手順は、Windows マシン上の MySQL のためのものです。)

  • my.ini の下にある [mysqld] セクションの下に log コマンドのように log="C:\Program Files\MySQL\MySQL Server 5.1\data\mysql.log"
  • MySQLを再起動します。
  • そのファイルにあるすべてのクエリのロギングを開始します。

このファイルはすぐに大きくなるので、テストが終わったら必ず削除し、ロギングをオフにしてください。