Mencipta Penyata Disediakan MySQL Selamat dalam PHP
Jika anda seorang pemula dalam PHP dengan pernyataan yang disediakan MySQL, anda telah terjumpa perlu mendapatkan semula data daripada lajur dengan selamat. Untuk mencapai matlamat ini, mari kita menyelami dunia pernyataan yang disediakan, memastikan keselamatan pertanyaan anda.
Menyingkap Pertanyaan Terdedah
Pernyataan SQL semasa anda, sambil terus terang, kurang dari segi keselamatan:
$qry = "SELECT * FROM mytable where userid='{$_GET['userid']}' AND category='{$_GET['category']}'ORDER BY id DESC";
Pendekatan ini menyebabkan aplikasi anda terdedah kepada suntikan SQL serangan, di mana pengguna berniat jahat boleh memanipulasi pertanyaan anda menggunakan aksara khas.
Membuat Kenyataan Disediakan Selamat
Untuk mengimunkan pertanyaan anda, mari gunakan pernyataan yang disediakan:
$stmt = $db->prepare("SELECT * FROM mytable WHERE userid=? AND category=? ORDER BY id DESC");
Pernyataan ini menggunakan ruang letak ("?") untuk mewakili parameter input. Kami kemudian mengikat parameter ini kepada nilai sebenar dengan selamat:
$stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
Dengan mengikat data secara berasingan, kami menghalang watak berniat jahat daripada mengubah pertanyaan kami.
Pengoptimuman Prestasi
Anda ingin tahu tentang implikasi prestasi kenyataan yang disediakan. Walaupun ia boleh memberikan faedah kecil untuk satu pelaksanaan, ia benar-benar bersinar apabila dilaksanakan beberapa kali dalam halaman atau gelung.
Pernyataan yang disediakan menyimpan cache pelan pertanyaan, menghapuskan keperluan untuk menghuraikan dan menyusunnya setiap kali ia dijalankan . Pengoptimuman ini boleh membawa kepada peningkatan kelajuan yang ketara, terutamanya untuk pertanyaan yang kompleks.
Mengekstrak Tatasusunan Bersekutu
Untuk pertanyaan yang mengembalikan berbilang lajur, anda boleh menggunakan fungsi berikut untuk secara automatik mengikat kepada tatasusunan bersekutu:
function stmt_bind_assoc (&$stmt, &$out) { ... }
Utiliti ini menyelaraskan proses bekerja dengan tatasusunan yang dikembalikan oleh PILIH * pertanyaan.
Kesimpulan
Pernyataan yang disediakan adalah penting untuk mendapatkan pertanyaan MySQL anda dan mencegah serangan suntikan SQL. Dengan melaksanakannya, anda boleh melindungi aplikasi anda dan menikmati pengoptimuman prestasi apabila melaksanakan pertanyaan yang sama beberapa kali. Hayati kuasa kenyataan yang disediakan untuk akses data yang selamat dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Data dengan Selamat daripada MySQL Menggunakan Penyata Disediakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!