Mengapa Menggunakan mysql_real_escape_string Daripada addslashes untuk Pertanyaan MySQL?

DDD
Lepaskan: 2024-11-14 16:47:02
asal
358 orang telah melayarinya

Why Use mysql_real_escape_string Instead of addslashes for MySQL Queries?

Memahami Perbezaan antara mysql_real_escape_string dan addslashes

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:

  • x00: Aksara ini mewakili bait NULL, yang sering digunakan untuk menandakan penghujung rentetan dalam C dan bahasa pengaturcaraan lain. Mengelakkannya membantu mengelakkan penamatan awal pertanyaan.
  • n: Watak ini mewakili watak baris baharu. Melarikan diri daripadanya memastikan ia dianggap sebagai sebahagian daripada rentetan dalam pertanyaan, dan bukannya menyebabkan pengembalian serta-merta ke baris seterusnya.
  • r: Aksara ini mewakili watak carriage return. Melarikannya adalah penting atas sebab yang sama seperti n.
  • x1a: Watak ini dikenali sebagai watak "control-Z" dan boleh menyebabkan tingkah laku yang tidak dijangka dalam pertanyaan MySQL. Melarikan diri daripadanya menghalang sebarang isu yang berpotensi.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan