Pernyataan Disediakan: Bolehkah Mereka Mengendalikan Pengecam dan Kata Kunci?
Pertanyaan dinamik menggunakan pembolehubah untuk menentukan jadual, medan dan nilai carian. Walaupun menggabungkan pembolehubah ke dalam pertanyaan telah terbukti berjaya, menggunakan bindParam() atau bindValue() PDO untuk mengikat pembolehubah menghasilkan tatasusunan kosong.
Mengapa Ia Tidak Berfungsi:
Pernyataan yang disediakan oleh PDO hanya membenarkan ruang letak untuk literal data. Percubaan untuk mewakili pengecam (nama jadual atau medan) atau kata kunci menggunakan ruang letak tidak akan berfungsi.
Penyelesaian:
Pengecam: Untuk memasukkan pembolehubah yang mewakili pengecam, ikut ini peraturan:
Kata kunci:
Contoh Kod:
// Safely format identifier $field = "`" . str_replace("`", "``", $field) . "`"; $sql = "SELECT * FROM t ORDER BY $field"; // Whitelist keyword $dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; $sql = "SELECT * FROM t ORDER BY field $dir";
Atas ialah kandungan terperinci Bolehkah Penyata Disediakan Mengendalikan Pengecam Pangkalan Data dan Kata Kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!