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

PHP MySQL cara menyimpan/melarikan diri dengan benar

Pastikan Anda menyetel double_encode menjadi false , jika tidak, string yang sudah dikodekan akan dikodekan lagi, mengubah & ke dalam & . Kemudian ketika Anda pergi untuk menampilkannya setelah menggunakan html_entity_decode , itu akan muncul seolah-olah masih dikodekan.

Hasil yang Tidak Diinginkan:http://ideone.com/uQxuAM

Menggunakan htmlentities($string, ENT_QUOTES, 'UTF-8', false); akan memastikan ini tidak akan terjadi.

Kemudian gunakan html_entity_decode($string, ENT_QUOTES, 'UTF-8'); untuk menampilkan nilai.

Demo:http://ideone.com/8Jo7YA

Namun, MySQL sepenuhnya mampu menyimpan nilai-nilai yang didekodekan dalam database.

Anda tidak pernah ingin memiliki string yang disandikan dengan entitas html yang disimpan di database Anda. Apa yang terjadi ketika Anda ingin membuat CSV atau PDF, mengirim email, atau apa pun yang bukan HTML?

Selain fakta bahwa Anda harus melakukan dua kali pemrograman pengkodean data, meningkatkan jumlah data dalam database, kemudian masih perlu mendekode output, ada banyak artikel online yang menjawab mengapa Anda tidak melakukannya.

Jadi, Anda hanya perlu mengkodekan nilai untuk menampilkan output data yang dihasilkan dalam html.

Alih-alih, Anda harus keluar dari input menggunakan mysqli_real_escape_string

$string = '<a href="/path/to/file?a=b&foo=bar#baz">My Link</a>';
$sql = "INSERT INTO links (link)"
     . "VALUES(" . mysqli_real_escape_string($string) . "')";

atau lebih baik lagi gunakan pernyataan yang sudah disiapkan

$stmt = $mysqli->prepare("INSERT INTO links (link) VALUES(?)");
$stmt->bind_param("s", $string);
$stmt->execute();

Kemudian memformat output sebagai pesan sukses untuk menampilkan apa yang sebenarnya ditambahkan ke database.

$html = "<div>Added Link: " . htmlentities($string, ENT_QUOTES, 'UTF-8', false) . "</div>";

Sekarang tidak perlu menggunakan html_entity_decode agar html dirender di browser.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kohana 3.1.4:Database_Exception [ 2 ]:mysql_connect():Akses ditolak

  2. dua kunci asing, cara memetakan dengan laravel fasih

  3. Beberapa tabel kueri MySQL

  4. mysql untuk python 2. 7 mengatakan Python v2.7 tidak ditemukan

  5. Keluar dari tanda hubung (-) dengan benar di kueri mysql