Dalam PHP, dua fungsi biasanya digunakan untuk melepaskan rentetan sebelum menggunakannya dalam pertanyaan pangkalan data: mysql_real_escape_string dan addslashes Walaupun kedua-duanya mempunyai tujuan yang sama, terdapat perbezaan halus yang perlu dipertimbangkan.
menambah garis miring
Fungsi ini menambahkan garisan ke belakang sebelum aksara tertentu: ' (petikan tunggal), " (petikan berganda ), (slash belakang), dan NUL (bait NULL). Ia membantu melindungi daripada serangan suntikan SQL dengan menghalang aksara ini daripada menjadi ditafsirkan sebagai sebahagian daripada pertanyaan.
mysql_real_escape_string
Fungsi ini, tidak digunakan dalam PHP 7.3.0, direka khusus untuk MySQL. Ia menambahkan garis miring ke belakang pada aksara yang diperlukan MySQL untuk dilepaskan, termasuk x00, n, r, x1a, ' (petikan tunggal), dan " (petikan berganda). Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pelaksanaan sebenar melarikan diri dalam MySQL mungkin melibatkan aksara tambahan.
Kepentingan Aksara Yang Tidak Diescape dalam mysql_real_escape_string
Perbezaan utama antara kedua-dua fungsi terletak pada watak-watak yang tidak dilepaskan oleh tanda miring tambahan. Ini termasuk:
Pengesyoran
Secara amnya disyorkan untuk menggunakan fungsi melarikan diri pembekal data anda, seperti mysql_real_escape_string, bukannya addslash. Ini memastikan bahawa rentetan disediakan dengan sewajarnya untuk pangkalan data khusus yang digunakan. Walaupun mysql_real_escape_string tidak digunakan lagi, kemungkinan versi PHP yang lebih baharu akan mempunyai fungsi penggantian yang serupa untuk melepaskan rentetan dalam pertanyaan MySQL.
Atas ialah kandungan terperinci Mengapa Menggunakan mysql_real_escape_string Daripada addslashes untuk Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!