Rumah > pangkalan data > tutorial mysql > Bolehkah Penyata Disediakan Mengendalikan Pengecam Pangkalan Data dan Kata Kunci?

Bolehkah Penyata Disediakan Mengendalikan Pengecam Pangkalan Data dan Kata Kunci?

Linda Hamilton
Lepaskan: 2024-11-18 18:46:02
asal
682 orang telah melayarinya

Can Prepared Statements Handle Database Identifiers and Keywords?

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:

    • Sertakan pengecam dalam kutu belakang (`).
    • Elakkan kutu belakang dalam pembolehubah dengan menggandakannya (``).
  • Kata kunci:

    • Semak kata kunci yang disediakan pengguna berbanding senarai putih.
    • Gunakan kata kunci tersenarai putih sahaja dalam pertanyaan.

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";
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan