Rumah >pembangunan bahagian belakang >tutorial php >Bolehkah mysql_real_escape_string() Digunakan dengan Selamat dengan Penyata Disediakan Tersuai?
Adakah mysql_real_escape_string() Mempunyai Cacat Tidak Boleh Dibetulkan?
Sesetengah skeptik berpendapat bahawa fungsi mysql_real_escape_string() secara asasnya melindungi SQL dan pertanyaan tidak boleh dipercayai . Mereka menunjukkan artikel lapuk sebagai bukti.
Bolehkah Ia Digunakan untuk Penyata Disediakan Tersuai?
Walaupun terdapat kebimbangan ini, masih mungkin untuk memanfaatkan mysql_real_escape_string() untuk mencipta kenyataan yang disediakan tersuai. Walau bagaimanapun, ia memerlukan perhatian yang teliti terhadap pengendalian charset.
Penyelesaian:
Menurut dokumentasi MySQL C API untuk mysql_real_escape_string(), anda harus menggunakan mysql_set_character_set() untuk menetapkan set watak. Ini memastikan ia turut mempengaruhi set aksara yang digunakan oleh mysql_real_escape_string().
Contoh Kod:
#include <mysql.h> int main() { MYSQL *conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0); // Change the encoding using mysql_set_charset() mysql_set_charset(conn, "utf8"); // Create a custom prepared statement using mysql_real_escape_string() char query[1024]; mysql_real_escape_string(conn, query, "SELECT * FROM users WHERE username='test'", sizeof(query)); // Execute the query mysql_query(conn, query); mysql_close(conn); return 0; }
Dengan mengikuti pendekatan ini dan mengelakkan SET NAMA/SET SET KARAKTER , anda boleh menggunakan mysql_real_escape_string() dengan berkesan untuk melindungi pertanyaan SQL anda daripada suntikan.
Atas ialah kandungan terperinci Bolehkah mysql_real_escape_string() Digunakan dengan Selamat dengan Penyata Disediakan Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!