Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah pertanyaan berparameter dalam MySQLi melindungi aplikasi PHP daripada kelemahan suntikan SQL?
Menggunakan Parameter dalam MySQLi untuk Pertanyaan Cekap dan Selamat
Dalam bidang pengaturcaraan pangkalan data PHP, apabila bekerja dengan MySQL melalui antara muka MySQLi, adalah perkara biasa untuk menghadapi senario di mana pertanyaan melibatkan parameter dinamik. Pertimbangkan contoh berikut:
SELECT $fields FROM $table WHERE $this = $that AND $this2 = $that2
Untuk membina pertanyaan sedemikian secara manual dengan menginterpolasi nilai ke dalam rentetan SQL, anda akan melakukan sesuatu seperti ini:
$search = array('name' => 'michael', 'age' => 20); $query = "SELECT $fields FROM $table WHERE name = '$search[name]' AND age = '$search[age]'";
Walau bagaimanapun, pendekatan ini menimbulkan kebimbangan tentang Kelemahan suntikan SQL. Untuk menangani perkara ini, MySQLi menawarkan penyelesaian yang mantap menggunakan pertanyaan berparameter.
Kuasa Pertanyaan Berparameter
Pertanyaan berparameter membolehkan anda menghantar parameter pertanyaan secara berasingan daripada pernyataan SQL itu sendiri . Ini meningkatkan keselamatan dengan ketara dengan menghalang pelaksanaan kod berniat jahat yang boleh mengeksploitasi input pengguna. Begini rupa pertanyaan berparameter untuk contoh di atas:
$db = new mysqli(...); $name = 'michael'; $age = 20; $stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?"); $stmt->bind_param("si", $name, $age); $stmt->execute(); $stmt->close();
Penjelasan Terperinci
Petua Tambahan
Atas ialah kandungan terperinci Bagaimanakah pertanyaan berparameter dalam MySQLi melindungi aplikasi PHP daripada kelemahan suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!