Penggantian Parameter dalam MySQL
Dalam kod anda, tanda soal (?) dalam klausa WHERE memainkan peranan penting dalam menggunakan pernyataan yang disediakan . Penyataan yang disediakan menawarkan pendekatan yang dipertingkatkan kepada pengikatan parameter dalam MySQL, memberikan banyak kelebihan.
Apakah itu Penyata Disediakan?
Pernyataan yang disediakan ialah pernyataan SQL yang telah disusun sebelumnya yang menerima parameter secara berasingan daripada pertanyaan itu sendiri. Ini membolehkan pangkalan data menghuraikan dan mengoptimumkan pertanyaan sekali, mengurangkan keperluan untuk pemprosesan berulang dengan setiap pelaksanaan pertanyaan. Selepas itu, pengoptimuman ini membawa kepada peningkatan prestasi.
Faedah Keselamatan
Penyata yang disediakan telah mendapat pengiktirafan meluas untuk mengukuhkan keselamatan terhadap suntikan SQL. Dengan memisahkan parameter pertanyaan daripada pernyataan itu sendiri, pernyataan yang disediakan secara berkesan menghalang percubaan berniat jahat untuk menyuntik kod berbahaya ke dalam pangkalan data melalui input.
Contoh Ilustrasi
Dalam kod khusus anda, pernyataan yang disediakan digunakan seperti berikut:
$sql = 'SELECT page.*, author.name AS author, updator.name AS updator ' . 'FROM '.TABLE_PREFIX.'page AS page ' . 'LEFT JOIN '.TABLE_PREFIX.'user AS author ON author.id = page.created_by_id ' . 'LEFT JOIN '.TABLE_PREFIX.'user AS updator ON updator.id = page.updated_by_id ' . 'WHERE slug = ? AND parent_id = ? AND (status_id='.Page::STATUS_REVIEWED.' OR status_id='.Page::STATUS_PUBLISHED.' OR status_id='.Page::STATUS_HIDDEN.')';
Dalam kod ini, tanda soal (?) bertindak sebagai ruang letak untuk parameter yang akan terikat pada pernyataan. Apabila melaksanakan pernyataan ini, enjin pangkalan data akan menggantikan tanda soal dengan nilai sebenar yang diberikan sebagai input.
Faedah Penyata Disediakan
Ringkasnya, pernyataan yang disediakan dalam MySQL menawarkan kelebihan berikut:
Atas ialah kandungan terperinci Bagaimanakah Pernyataan Disediakan dengan Penggantian Parameter Meningkatkan Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!