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
171 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!

sumber:php.cn
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