Apabila Penyata Disediakan Adalah Penting
Semasa anda pada mulanya menggunakan mysql_connect dan mysql_query untuk mengurus interaksi pangkalan data, kebimbangan terhadap suntikan SQL telah mendorong anda untuk menyiasat kenyataan yang disediakan. Walau bagaimanapun, salah tanggapan biasa timbul: adakah kenyataan yang disediakan hanya perlu untuk melindungi input pengguna?
Mengapa Anda Perlu Sentiasa Menggunakan Penyata yang Disediakan
Jawapannya sangat jelas: sentiasa gunakan yang disediakan kenyataan, tanpa pengecualian. Walaupun anda nampaknya tidak menghadapi risiko penggodaman dalam menggunakan mysql_num_rows, penggunaan pernyataan yang disediakan adalah lebih baik atas sebab-sebab berikut:
Cara Penyata Disediakan Berfungsi
Pernyataan yang disediakan menghantar pertanyaan dan data secara berasingan, membenarkan pangkalan data untuk melaksanakannya sebagai satu transaksi. Perlindungan ini jauh lebih teguh daripada menggabungkan pertanyaan dengan data, yang merupakan amalan dengan fungsi mysql_* dan menjadikan pangkalan data mudah terdedah kepada suntikan SQL.
Menggunakan Penyata Disediakan dengan Perpustakaan PHP
Dengan PDO, anda boleh menggunakan kod ilustrasi berikut untuk menggunakan yang disediakan pernyataan:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?,?)"); $stmt->execute([$name, $value]);
Dengan MySQLi, kodnya adalah seperti berikut:
$dbh->execute_query("INSERT INTO REGISTRY (name, value) VALUES (?,?)", [$name, $value]);
Sumber Tambahan
Atas ialah kandungan terperinci Patutkah Saya Sentiasa Menggunakan Penyata Disediakan dalam Interaksi Pangkalan Data Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!