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

Membuat kueri SQL dinamis ke DB MySQL

Jika Anda memiliki peta dengan nama dan nilai bidang seperti ini:

m := map[string]interface{}{"UserID": 1234, "Age": 18}

maka Anda dapat membuat kueri seperti ini:

var values []interface{}
var where []string
for _, k := range []string{"userId", "gender", "age", "name", "height", "weight", "ethnicity"} {
    if v, ok := m[k]; ok {
        values = append(values, v)
        where = append(where, fmt.Sprintf("%s = ?", k))
    }
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)

Ini tidak rentan terhadap injeksi SQL karena placeholder digunakan untuk bagian kueri di luar kontrol langsung aplikasi.

Jika kunci peta diketahui sebagai nama bidang yang diizinkan, gunakan ini:

var values []interface{}
var where []string
for k, v := range m {
    values = append(values, v)
    where = append(where, fmt.Sprintf("%s = ?", k))
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memfilter Masukan Pengguna

  2. Jenis di MySQL:BigInt(20) vs Int(20)

  3. Bagaimana kategori dan subkategori untuk WooCommerce disimpan di DB?

  4. Perintah tidak sinkron; Anda tidak dapat menjalankan perintah ini sekarang

  5. Query Berparameter PHP/MySQL