Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Dapatkan Data dengan Selamat daripada MySQL Menggunakan Penyata Disediakan PHP?

Bagaimanakah Saya Boleh Dapatkan Data dengan Selamat daripada MySQL Menggunakan Penyata Disediakan PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 09:10:13110semak imbas

How Can I Securely Retrieve Data from MySQL Using PHP Prepared Statements?

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!

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