Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Masukkan teks dan karakter khusus dan MySQL

Anda memiliki ide yang tepat untuk menjaga teks dalam database sebagai mentah. Tidak yakin untuk apa semua entitas HTML itu; Anda tidak perlu melakukan itu untuk penyisipan database.

[Satu-satunya alasan saya dapat memikirkan mengapa Anda mungkin mencoba mendekode input masuk entitas untuk database adalah jika Anda menemukan Anda mendapatkan referensi karakter seperti Š dalam input pengiriman formulir Anda. Jika itu terjadi, itu karena pengguna memasukkan karakter yang tidak ada dalam pengkodean yang digunakan oleh halaman dengan formulir. Bentuk penyandian ini benar-benar palsu karena Anda kemudian tidak dapat membedakan antara pengguna yang mengetik Š dan secara harfiah mengetik Š ! Anda harus menghindari ini dengan menggunakan pengkodean UTF-8 untuk semua halaman dan konten Anda, karena setiap karakter yang mungkin cocok dengan pengkodean ini.]

String dalam skrip Anda harus selalu berupa teks mentah tanpa meloloskan diri. Itu berarti Anda tidak melakukan apa pun pada mereka sampai saat Anda mengeluarkannya ke dalam konteks yang bukan teks biasa. Jadi untuk memasukkannya ke dalam string SQL:

$category= trim($_POST['category']);
mysql_query("SELECT * FROM things WHERE category='".mysql_real_escape_string($category)."'");

(atau gunakan kueri berparameter untuk menghindari keharusan melarikan diri secara manual.) Saat memasukkan konten ke dalam HTML:

<input type="text" name="category" value="<?php echo htmlspecialchars($category); ?>" />

(Anda dapat mendefinisikan fungsi pembantu dengan nama yang lebih pendek seperti function h($s) { echo htmlspecialchars($s, ENT_QUOTES); } jika Anda ingin mengurangi jumlah pengetikan yang harus Anda lakukan di template.)

Dan ... itu cukup banyak itu. Anda tidak perlu memproses string yang keluar dari database, karena string tersebut sudah merupakan string mentah. Anda tidak perlu memproses string input(*), selain validasi bidang khusus aplikasi yang ingin Anda lakukan.

*:baik, kecuali jika magic_quotes_gpc diaktifkan, dalam hal ini Anda perlu stripslashes() semua yang masuk dari get/post/cookie, atau, opsi favorit saya, langsung gagal:

if (get_magic_quotes_gpc())
    die(
        'Magic quotes are turned on. They are utterly bogus and no-one should use them. '.
        'Turn them off, you idiot, or I refuse to run. So there!'
    );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengganti nama kolom dalam pernyataan pilih MySQL dengan paket R RJDBC

  2. Cara menggunakan php, hitung, masukkan array pasangan kata (string) ke MySQL

  3. Tempat menyimpan file yang diunggah (suara, gambar, dan video)

  4. kesalahan saat menggunakan mysql_real_escape_string()

  5. MASUKKAN kueri PILIH ketika satu kolom unik