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:
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!