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

Mengapa menggunakan bin2hex saat memasukkan data biner dari PHP ke MySQL?

Ini terdengar seperti legenda urban bagi saya.

bin2hex() memetakan setiap byte dalam input ke dua byte dalam output ('a' -> '61' ), jadi Anda akan melihat peningkatan memori yang signifikan dari skrip yang melakukan kueri - skrip harus menggunakan setidaknya memori sebanyak panjang byte data biner yang akan dimasukkan.

Selanjutnya, ini menyiratkan bahwa menjalankan bin2hex() pada string yang panjang membutuhkan banyak lebih lama dari menjalankan mysql_real_escape string() , yang - seperti yang dijelaskan dalam dokumentasi MySQL - hanya lolos dari 6 karakter:NULL , \r , \n , \ , , dan 'Kontrol-Z'.

Itu untuk bagian PHP, sekarang untuk MySQL:Server perlu melakukan operasi sebaliknya untuk menyimpan data dengan benar. Membalikkan salah satu fungsi membutuhkan waktu yang hampir sama dengan operasi aslinya - fungsi kebalikan dari mysql_real_escape_string() perlu mengganti nilai yang lolos (\\ ) dengan yang tidak lolos (\ ), sedangkan kebalikan dari bin2hex() perlu mengganti setiap byte tuple dengan byte baru.

Sejak memanggil mysql_real_escape_string() pada data biner aman (menurut MySQL dan dokumentasi PHP atau bahkan ketika hanya mempertimbangkan bahwa operasi tidak melakukan konversi selain yang tercantum di atas), sama sekali tidak masuk akal untuk melakukan operasi yang mahal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mySQL memeriksa apakah nama pengguna dan kata sandi ada di database

  2. Symfony 2:INNER JOIN pada tabel yang tidak terkait dengan pembuat kueri doktrin

  3. Bagaimana cara menggemakan Resource id #6 dari respons MySql di PHP?

  4. Bagaimana cara menyimpan file .txt database MySQL?

  5. Hitung saldo dengan mysql