Rumah > pangkalan data > tutorial mysql > Adakah `mysql_real_escape_string()` Benar-benar Cacat, atau Hanya Disalahpahami?

Adakah `mysql_real_escape_string()` Benar-benar Cacat, atau Hanya Disalahpahami?

Mary-Kate Olsen
Lepaskan: 2024-12-04 07:15:17
asal
312 orang telah melayarinya

Is `mysql_real_escape_string()` Really Flawed, or Just Misunderstood?

Adakah mysql_real_escape_string() Fatal Cacat?

Walaupun dakwaan tidak boleh dipercayai, mysql_real_escape_string() kekal sebagai alat yang berharga untuk mencipta kenyataan disediakan anda sendiri . Berikut ialah pecahan fungsinya dan cara menggunakannya dengan berkesan.

mysql_real_escape_string() Diterangkan

Dokumentasi MySQL C API menyatakan: "Jika anda perlu menukar aksara set sambungan, anda harus menggunakan fungsi mysql_set_character_set() daripada melaksanakan SET pernyataan NAMES (atau SET CHARACTER SET)."

Ini bermakna untuk menggunakan mysql_real_escape_string() dengan betul, anda harus menggunakan mysql_set_charset(). mysql_set_charset() PHP mencerminkan mysql_set_character_set() MySQL.

Kod Bukti

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// Set the character set using mysql_set_charset()
$mysqli->set_charset("utf8mb4");

// Prepared statement using mysql_real_escape_string()
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param('s', mysql_real_escape_string($_GET['username']));
$stmt->execute();
?>
Salin selepas log masuk

Dalam contoh ini, mysql_set_charset() memastikan sambungan menggunakan set aksara utf8mb4 Ini membolehkan mysql_real_escape_string() mengendalikan aksara dengan betul yang mungkin terdedah kepada suntikan SQL.

Kesimpulan

Walaupun penting untuk memahami batasan mysql_real_escape_string(), menggunakan ia bersempena dengan mysql_set_charset() membolehkan anda mencipta dengan berkesan kenyataan anda sendiri yang disediakan. Dengan mengambil langkah ini, anda boleh mengurangkan risiko suntikan SQL dan mengekalkan keselamatan aplikasi anda.

Atas ialah kandungan terperinci Adakah `mysql_real_escape_string()` Benar-benar Cacat, atau Hanya Disalahpahami?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan