Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengemas kini Pangkalan Data MySQL dengan Selamat Menggunakan Sambungan MySQLi dalam PHP?

Bagaimana untuk Mengemas kini Pangkalan Data MySQL dengan Selamat Menggunakan Sambungan MySQLi dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 01:04:18213semak imbas

How to Securely Update a MySQL Database Using the MySQLi Extension in PHP?

Sampel Kod Sambungan MySQL Sempurna

Matlamat soalan ini adalah untuk menyediakan sampel kod PHP yang ringkas dan selamat menggunakan sambungan MySQL. Kod harus mengelakkan ralat biasa yang dikaitkan dengan fungsi mysql_*, termasuk:

  • Suntikan SQL
  • Pelaporan ralat yang rosak
  • Suntikan skrip merentas tapak (XSS)

Kod Contoh:

<?php

header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$config = [
    'host' => '127.0.0.1',
    'user' => 'my_user',
    'pass' => 'my_pass',
    'db' => 'my_database'
];

$connection = @mysql_connect($config['host'], $config['user'], $config['pass']);

if (!$connection) {
    trigger_error('Unable to connect to database: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_select_db($config['db'])) {
    trigger_error('Unable to select db: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_set_charset('utf8')) {
    trigger_error('Unable to set charset for db connection: ' . mysql_error(), E_USER_ERROR);
}

$result = mysql_query(
    'UPDATE tablename SET name = "' . mysql_real_escape_string($_POST['name']) . '" WHERE id = "' . mysql_real_escape_string($_POST['id']) . '"'
);

if ($result) {
    echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') . ' updated.';
} else {
    trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR);
}
?>

Penjelasan:

  • Kod ini bersambung ke pangkalan data MySQL menggunakan mysql_connect() dan menentukan pangkalan data untuk digunakan dengan mysql_select_db ().
  • Fungsi mysql_set_charset() digunakan untuk menetapkan set aksara untuk sambungan kepada UTF-8.
  • Pertanyaan kemas kini SQL dibina menggunakan ruang letak dan fungsi mysql_real_escape_string() untuk menghalang suntikan SQL.
  • Hasil pertanyaan disemak, dan mesej "$name dikemas kini." dipaparkan jika kemas kini berjaya. Jika tidak, ralat akan dicetuskan.
  • Pelaporan ralat didayakan untuk membolehkan penyahpepijatan yang lebih baik semasa pembangunan. Dalam mod pengeluaran, tetapan ini boleh dilumpuhkan untuk menyekat mesej ralat PHP kepada pengguna akhir.

Perhatikan bahawa sampel kod ini disediakan sebagai rujukan dan tidak boleh dianggap sebagai penyelesaian lengkap untuk semua aplikasi PHP . Adalah disyorkan untuk menggunakan sambungan PDO untuk aplikasi MySQL moden, kerana ia menyediakan keselamatan dan prestasi yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Pangkalan Data MySQL dengan Selamat Menggunakan Sambungan MySQLi 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