Soal MySQL Selamat dengan Sambungan MySQL
Pengenalan
Walaupun terdapat PDO, keluarga fungsi mysql_* kekal sebagai pilihan biasa untuk interaksi pangkalan data PHP. Walaupun perpustakaan ini sangat selamat apabila digunakan dengan betul, penggunaannya sering membawa kepada isu keselamatan dan teknikal. Artikel ini menyediakan contoh kod sempurna yang mempamerkan cara menggunakan sambungan MySQL dengan selamat.
Mengelakkan Perangkap Biasa
Fungsi mysql_* terkenal dengan beberapa masalah biasa, termasuk :
Kod Contoh
Sampel kod berikut melaksanakan skrip PHP mudah yang mengemas kini baris jadual pangkalan data berdasarkan pembolehubah POST sambil mengurangkan perkara di atas risiko:
<?php header('Content-type: text/html; charset=utf-8'); error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $config = array( '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); } ?>
Ciri Utama
Kesimpulan
Sampel kod ini menyediakan asas kukuh untuk pertanyaan MySQL yang selamat menggunakan keluarga fungsi mysql_*. Ia menangani masalah biasa dengan melaksanakan pengendalian ralat yang betul, menghalang suntikan SQL dan menyokong Unicode. Dengan mengamalkan amalan ini, pembangun boleh menulis aplikasi dipacu pangkalan data yang selamat dan boleh dipercayai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mengelakkan Suntikan SQL dan Perangkap Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!