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

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

Susan Sarandon
Susan Sarandonasal
2024-12-20 13:07:10350semak imbas

How Can I Securely Retrieve Data from MySQL Using Prepared Statements in 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!

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