Rumah > pangkalan data > tutorial mysql > Mengapa Menggunakan mysql_real_escape_string Daripada addslashes untuk Pertanyaan MySQL?

Mengapa Menggunakan mysql_real_escape_string Daripada addslashes untuk Pertanyaan MySQL?

DDD
Lepaskan: 2024-11-14 16:47:02
asal
439 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) 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:

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

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!

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