Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Melihat Pertanyaan SQL Sebenar yang Dilaksanakan oleh Penyata PDO Saya yang Disediakan?

Bagaimanakah Saya Boleh Melihat Pertanyaan SQL Sebenar yang Dilaksanakan oleh Penyata PDO Saya yang Disediakan?

DDD
Lepaskan: 2024-12-31 11:48:16
asal
826 orang telah melayarinya

How Can I See the Actual SQL Query Executed by My PDO Prepared Statement?

Cara Mendapatkan Pertanyaan SQL Mentah yang Dilaksanakan oleh Penyata Disediakan PDO

Apabila menyahpepijat kenyataan yang disediakan PDO, selalunya berguna untuk mempunyai akses kepada rentetan pertanyaan SQL mentah yang telah dilaksanakan. Walau bagaimanapun, ia tidak serta-merta jelas bagaimana untuk melakukan ini, kerana kenyataan yang disediakan biasanya melibatkan pemisahan data parameter daripada pertanyaan sebenar.

Pengendalian Dalaman PDO bagi Penyata Disediakan

Tidak seperti pernyataan SQL biasa, di mana pertanyaan dan parameter dihantar ke pangkalan data bersama-sama, pernyataan yang disediakan dibahagikan kepada dua bahagian:

  • SQL penyata dihantar ke pangkalan data secara berasingan semasa permohonan kaedah prepare().
  • Nilai parameter dihantar semasa permohonan kaedah execute().

Pemisahan ini menghalang serangan suntikan SQL. Walau bagaimanapun, ini juga bermakna bahawa PDO tidak mempunyai akses terus kepada rentetan pertanyaan gabungan dengan nilai parameter terinterpolasi.

Pilihan PDO::ATTR_EMULATE_PREPARES

Untuk mengakses rentetan pertanyaan terinterpolasi, satu pilihan adalah untuk menetapkan atribut PDO::ATTR_EMULATE_PREPARES. Mod ini memaksa PDO untuk mencontohi pertanyaan yang disediakan pada bahagian klien, menggabungkan pertanyaan dan parameter sebelum menghantarnya ke pangkalan data.

Walau bagaimanapun, kaedah ini mengingatkan:

  • Anda akan kehilangan manfaat keselamatan kenyataan yang disediakan yang benar.
  • PDO masih tidak mendedahkan interpolasi rentetan pertanyaan secara eksplisit.

Menggunakan Log Pertanyaan Am MySQL

Jika anda menggunakan MySQL, anda boleh mendayakan log pertanyaan umum untuk menangkap rentetan pertanyaan yang diinterpolasi. Walau bagaimanapun, pendekatan ini memerlukan pertanyaan telah dilaksanakan.

Kaedah Lain

Malangnya, tiada cara yang boleh dipercayai untuk mendapatkan rentetan pertanyaan yang diinterpolasi terus daripada PDO tanpa menggunakan emulasi atau pengelogan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melihat Pertanyaan SQL Sebenar yang Dilaksanakan oleh Penyata PDO Saya yang Disediakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan