Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh mendapatkan semula Pertanyaan SQL Mentah daripada Penyata Disediakan PDO?
Mengakses Raw SQL daripada PDO Prepared Statements: A Challenge
Penyata yang disediakan menawarkan kelebihan ketara dalam pelaksanaan pertanyaan pangkalan data: kecekapan dan keselamatan. Walau bagaimanapun, faedah ini disertakan dengan pertukaran: memeriksa pertanyaan SQL sebenar yang dilaksanakan adalah tidak mudah.
Masalahnya: PDO tidak secara langsung mendedahkan rentetan pertanyaan SQL berparameter terakhir. Ini adalah wujud kepada cara penyataan yang disediakan berfungsi: struktur pertanyaan dihantar ke pangkalan data, kemudian parameter dihantar secara berasingan. Oleh itu, PDO sendiri tidak pernah menggabungkan unsur-unsur ini.
Penyelesaian (dengan Kaveat):
PDO::ATTR_EMULATE_PREPARES
kepada true
memaksa PDO untuk membenamkan parameter terus ke dalam pertanyaan SQL sebelum menghantarnya. Ini menggagalkan tujuan kenyataan yang disediakan, mengorbankan prestasi dan faedah keselamatan mereka.Pertimbangan Penting:
Mata Lanjut:
$queryString
objek PDOStatement
kekal tidak berubah selepas parameter mengikat.Ini menerangkan sebab sukar untuk mendapatkan semula SQL tepat yang dilaksanakan oleh pernyataan yang disediakan oleh PDO. Amalan terbaik ialah menumpukan pada pengendalian ralat dan pengelogan yang mantap daripada cuba memeriksa secara langsung pertanyaan berparameter sepenuhnya.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan semula Pertanyaan SQL Mentah daripada Penyata Disediakan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!