Rumah > pangkalan data > tutorial mysql > Fungsi melarikan diri yang manakah lebih baik untuk MySQL: `mysql_real_escape_string` atau `addslashes`?

Fungsi melarikan diri yang manakah lebih baik untuk MySQL: `mysql_real_escape_string` atau `addslashes`?

Susan Sarandon
Lepaskan: 2024-11-12 15:50:02
asal
1046 orang telah melayarinya

Which escaping function is better for MySQL: `mysql_real_escape_string` or `addslashes`?

Fungsi MySQL Escape: mysql_real_escape_string vs. addslashes

Fungsi PHP mysql_real_escape_string() dan addslashes() berpotensi digunakan untuk bermasalah () dalam rentetan yang bertujuan untuk dimasukkan ke dalam pangkalan data MySQL. Walau bagaimanapun, terdapat perbezaan halus antara kedua-dua fungsi yang boleh menjejaskan kesesuaiannya untuk kes penggunaan yang berbeza.

addslashes()

addslashes() menggantikan set pratakrif aksara dengan garis miring ke belakang untuk menghalangnya daripada ditafsirkan sebagai aksara khas oleh pangkalan data. Set lalai aksara yang dilarikan oleh addslashes() termasuk petikan tunggal ('), petikan berganda ("), backslash () dan NULL byte.

mysql_real_escape_string()

mysql_real_escape_string() membungkus panggilan ke fungsi mysql_real_escape_string() dalaman MySQL, yang melarikan diri daripada julat aksara yang lebih luas daripada addslashes() Secara khususnya, mysql_real_escape_string() melarikan diri daripada aksara berikut:

    NULL bait)
  • n (suapan baris)
  • r (pemulangan pengangkutan)
  • , (koma)
  • ' (petikan tunggal)
  • " (petikan berganda)
  • x1a (EOF (hujung fail))

Perbezaan Utama

Perbezaan utama antara mysql_real_escape_string () dan addslashes() terletak pada pengendalian mereka terhadap aksara melarikan diri yang disebutkan di atas. mysql_real_escape_string() melarikan diri aksara tertentu yang addslashes() tidak, seperti NULL byte, line feed dan carriage return.

Selain itu, mysql_real_escape_string() melaksanakan operasi melarikan diri berdasarkan peraturan yang ditakrifkan oleh MySQL, yang boleh berbeza daripada peraturan melarikan diri yang digunakan oleh addslashes(). Dalam versi terbaru MySQL, sebagai contoh, pelarian rentetan mungkin melibatkan menggandakan aksara petikan dan bukannya mendahuluinya dengan garis miring ke belakang. mysql_real_escape_string() akan mengendalikan perubahan ini secara automatik, manakala addslashes() tidak.

Bila Menggunakan Fungsi Mana

Secara amnya, mysql_real_escape_string() diutamakan berbanding addslashes() untuk melarikan diri dari rentetan yang dimaksudkan untuk pangkalan data MySQL. Ini kerana mysql_real_escape_string() menggunakan peraturan melarikan diri khusus MySQL, memastikan rentetan disediakan dengan betul untuk dimasukkan ke dalam pertanyaan MySQL.

Sebaliknya, addslashes() boleh sesuai dalam situasi di mana anda perlu melepaskan rentetan untuk tujuan lain, seperti manipulasi teks umum atau menyediakan rentetan untuk paparan. Walau bagaimanapun, adalah penting untuk mengetahui batasan addslashes() dan untuk menguji kod anda dengan teliti apabila menggunakannya untuk melepaskan rentetan yang dimaksudkan untuk pangkalan data MySQL.

Atas ialah kandungan terperinci Fungsi melarikan diri yang manakah lebih baik untuk MySQL: `mysql_real_escape_string` atau `addslashes`?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan