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) membantu melindungi daripada serangan suntikan SQL dengan menghalang aksara ini daripada ditafsirkan sebagai sebahagian daripada pertanyaan.
mysql_real_escape_string
Fungsi ini, ditamatkan dalam PHP 7.3.0, direka khusus untuk MySQL Ia menambahkan garis miring ke belakang pada aksara yang diperlukan oleh MySQL untuk dilepaskan, termasuk x00, n, r, x1a, ' (petikan tunggal), dan " (double. petikan). 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-duanya fungsi terletak pada watak-watak yang tidak dapat dielakkan oleh tanda miring tambahan. Ini termasuk:
Pengesyoran
Secara amnya disyorkan untuk menggunakan fungsi melarikan diri pembekal data anda, seperti mysql_real_escape_string, dan 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!