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

Seperti apa internal dari pernyataan yang disiapkan?

Jika Anda mencoba melakukan apa yang tampaknya Anda coba lakukan... jangan coba lakukan itu.

Bukan itu yang dimaksud dengan pernyataan yang disiapkan (atau setidaknya bukan itu yang seharusnya).

Kode klien Anda tidak boleh mencoba menginterpolasi nilai ke dalam string kueri untuk menghasilkan kueri "selesai" untuk dikirim ke server untuk dieksekusi. Itu adalah resep untuk bencana, belum lagi rasa aman yang salah.

Pernyataan yang disiapkan menyampaikan pernyataan dengan ? placeholder ke server apa adanya, di mana server "mempersiapkan" pernyataan untuk dieksekusi... dan kemudian klien mengirim parameter ke server ("mengikat" parameter) untuk dieksekusi. Dengan melakukan ini, server tidak akan pernah bingung tentang "bagian mana yang merupakan SQL" dan "bagian mana yang merupakan data", membuat injeksi sql menjadi tidak mungkin dan membuat pelolosan dan pembersihan data tidak diperlukan.

Jika Anda tidak berkomunikasi secara langsung dengan C-API maka Anda harus memanggil metode di perpustakaan Anda yang memaparkan fungsi yang sama kepada Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks tidak terdefinisi:REMOTE_ADDR saat Laravel bermigrasi

  2. Inisialisasi PHP PDO gagal karena port ganda - PDOException tidak tertangkap:SQLSTATE[HY000] [2002]

  3. Memulihkan database mysql memberikan kesalahan

  4. PDO Error - PDOException' dengan pesan 'SQLSTATE[HY000]:General error'

  5. Rails 3 - kesalahan migrasi yang tiba-tiba tertunda