Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Tidak Boleh Menggunakan Nama Jadual sebagai Parameter dalam Penyata Disediakan?

Mengapa Saya Tidak Boleh Menggunakan Nama Jadual sebagai Parameter dalam Penyata Disediakan?

DDD
DDDasal
2024-12-27 12:23:10192semak imbas

Why Can't I Use Table Names as Parameters in Prepared Statements?

Tidak Dapat Parametize Nama Jadual dalam Penyata Disediakan

Walaupun percubaan awal anda untuk memisahkan pembolehubah untuk perlindungan terhadap suntikan SQL, anda telah menghadapi kesilapan. Isu ini berpunca daripada cuba memasukkan nama jadual sebagai parameter.

Dalam pernyataan yang disediakan, parameterisasi dihadkan kepada nilai dalam pernyataan SQL. Nama jadual, yang menentukan kesahihan pernyataan dan nama lajur, tidak boleh digantikan secara dinamik.

Malah dalam antara muka seperti PDO, yang mensimulasikan pernyataan yang disediakan, menggantikan nama jadual sebagai rentetan dalam petikan membawa kepada sintaks SQL yang tidak sah.

Untuk mengelakkan kerentanan suntikan, adalah lebih baik untuk mengekalkan set senarai putih nama jadual yang boleh diterima dan sahkan $mytable anda terhadapnya. Kod seperti "SELECT * FROM {$mytable}" kekal sebagai pilihan yang berdaya maju, dengan syarat anda memastikan kesahihan $mytable.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Nama Jadual sebagai Parameter dalam Penyata Disediakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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