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

MySqlParameter sebagai NamaTabel

Anda tidak dapat melewatkan nama tabel sebagai parameter. Anda harus menggunakan SQL dinamis untuk melakukan ini, jadi Anda harus konsentrasi string untuk melakukannya, misalnya

  MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)

Tetapi karena pengguna memasukkan tableName, maka injeksi SQL dimungkinkan. Anda dapat menggunakan SQL ini untuk menentukan apakah tabel itu ada sebelum meminta sesuatu darinya:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';

(Anda dapat membuat parameter kueri ini dengan sempurna, sehingga injeksi SQL akan dihilangkan)

Secara umum, berhati-hatilah dengan injeksi SQL. Tetapi jika Anda menggunakan internal ini (tidak mengekspos ke pengguna), maka injeksi SQL seharusnya tidak menjadi masalah.

Lebih baik, Anda dapat membuat prosedur tersimpan untuk menangani ini, seperti dalam jawaban saya yang lain:

Pengambil SQL terpadu dengan LINQ




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Posting fungsi Javascript dan panggil skrip php

  2. Cara Mengimpor File CSV ke Tabel MySQL

  3. Pada kunci duplikat abaikan?

  4. Tetapkan waktu eksekusi maksimum di MYSQL / PHP

  5. Umpan opsi pilih dari DB tergantung pada opsi pilih lainnya