[解決済み] 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を再起動します。
- そのファイルにあるすべてのクエリのロギングを開始します。
このファイルはすぐに大きくなるので、テストが終わったら必ず削除し、ロギングをオフにしてください。
関連
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PDOのプリペアドステートメントは、SQLインジェクションを防ぐのに十分ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない
-
[解決済み] PDO のプリペアドステートメントから生の SQL クエリ文字列を取得する