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!