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

Mengapa menggunakan pernyataan yang disiapkan mysql lebih aman daripada menggunakan fungsi escape umum?

Poin penting yang menurut saya hilang dari orang-orang di sini adalah bahwa dengan database yang mendukung kueri berparameter, tidak ada 'pelarian' yang perlu dikhawatirkan. Mesin database tidak menggabungkan variabel terikat ke dalam pernyataan SQL dan kemudian menguraikan semuanya; Variabel terikat disimpan terpisah dan tidak pernah diuraikan sebagai pernyataan SQL umum.

Dari situlah keamanan dan kecepatan berasal. Mesin database mengetahui bahwa placeholder hanya berisi data, sehingga tidak pernah diuraikan sebagai pernyataan SQL lengkap. Speedup datang ketika Anda menyiapkan pernyataan sekali dan kemudian menjalankannya berkali-kali; contoh kanonik memasukkan beberapa catatan ke dalam tabel yang sama. Dalam hal ini, mesin basis data perlu mengurai, mengoptimalkan, dll. hanya sekali.

Sekarang, satu gotcha adalah dengan perpustakaan abstraksi database. Mereka terkadang memalsukannya dengan hanya memasukkan variabel terikat ke dalam pernyataan SQL dengan pelolosan yang tepat. Tetap saja, itu lebih baik daripada melakukannya sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah Java + Mysql UTF8

  2. LINTAS/LUAR BERLAKU di MySQL

  3. Apa cara terbaik untuk menghapus baris lama dari MySQL secara bergulir?

  4. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan mysql_connect()

  5. MySQL CONVERT_TZ()