Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Dapatkan Data dengan Selamat daripada MySQL Menggunakan Penyata Disediakan dalam PHP?
Secure MySQL Prepared Statements dalam PHP
Apabila bekerja dengan pertanyaan SQL dalam PHP, adalah penting untuk mengutamakan keselamatan dengan menggunakan pernyataan yang disediakan. Begini cara untuk mencipta pernyataan selamat yang disediakan untuk mendapatkan semula lajur menggunakan input daripada parameter URL:
Gunakan MySQL Improved (MySQLi):
$db = new mysqli("host", "user", "pw", "database"); $stmt = $db->prepare("SELECT * FROM mytable WHERE userid = ? AND category = ? ORDER BY id DESC"); $stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category'])); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; } $stmt->close();
Sebagai alternatif, anda boleh menggunakan fungsi pembantu ini untuk memudahkan pengikatan tatasusunan bersekutu:
function stmt_bind_assoc (&$stmt, &$out) { $data = mysqli_stmt_result_metadata($stmt); $fields = array(); $out = array(); $fields[0] = $stmt; $count = 1; while ($field = mysqli_fetch_field($data)) { $fields[$count] = &$out[$field->name]; $count++; } call_user_func_array(mysqli_stmt_bind_result, $fields); }
Untuk digunakan ia:
$stmt->store_result(); $resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
Peningkatan Prestasi
Pernyataan yang disediakan meningkatkan prestasi dengan meminimumkan keperluan untuk menghurai semula dan merancang semula pertanyaan. Walau bagaimanapun, kesan pada kelajuan mungkin tidak ketara jika digunakan hanya beberapa kali pada satu halaman. Namun begitu, ia kekal sebagai amalan yang disyorkan untuk meningkatkan keselamatan dan perlindungan terhadap kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Data dengan Selamat daripada MySQL Menggunakan Penyata Disediakan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!