Meloloskan Diri daripada Aksara Escapable MySQL
MySQL mengandungi satu set aksara yang dianggap sebagai kad bebas, yang mampu memadankan berbilang input. Aksara ini termasuk % (peratus) dan _ (garis bawah). Walaupun mysql_real_escape_string() direka bentuk untuk mengendalikan pelarian kebanyakan aksara untuk dimasukkan dalam pertanyaan SQL, ia tidak menangani kad bebas ini.
Untuk melarikan diri sepenuhnya daripada input pengguna dan menghalang aksara ini daripada ditafsirkan sebagai metakarakter, adalah disyorkan untuk menggunakan fungsi mysql_real_escape_string() bersama-sama dengan addcslashes() fungsi.
Walau bagaimanapun, apabila melepaskan aksara untuk dimasukkan dalam pernyataan SUKA, pendekatan berbeza mesti diambil. Dalam pernyataan LIKE, _ dan % tidak dianggap sebagai kad bebas tetapi aksara literal. Untuk memadankan aksara ini secara literal, ia mesti dilepaskan menggunakan klausa ESCAPE.
Sebagai contoh, untuk memadankan tanda peratus literal, pernyataan LIKE harus menggunakan sintaks berikut:
LIKE 'something\%' ESCAPE '\'
Nota penggunaan garis miring ke belakang () sebagai kedua-dua aksara escape LIKE dan aksara escape untuk literal rentetan SQL. Ini membolehkan tanda peratus (%) ditafsirkan secara literal dalam pernyataan LIKE.
Apabila menggunakan pernyataan PHP yang disediakan, melarikan diri dikendalikan secara automatik, menghapuskan keperluan untuk melarikan diri secara manual. Walau bagaimanapun, jika kenyataan yang disediakan tidak tersedia, gabungan mysql_real_escape_string() dan addcslashes() boleh melindungi input pengguna secara berkesan daripada kemungkinan serangan suntikan SQL.
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri Aksara Kad Liar MySQL dengan Benar dalam Pernyataan Pertanyaan dan SUKA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!