Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tworzenie dynamicznych zapytań SQL do bazy danych MySQL

Jeśli masz mapę z nazwami pól i wartościami takimi jak ta:

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

następnie możesz zbudować zapytanie w ten sposób:

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...)

Nie jest to podatne na wstrzyknięcie SQL, ponieważ symbole zastępcze są używane dla części zapytania poza bezpośrednią kontrolą aplikacji.

Jeśli wiadomo, że klawisze mapy są dozwolonymi nazwami pól, użyj tego:

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. MySQL Workbench pokazuje wyniki jako BLOB

  2. Wstawianie dat w formacie mm/dd/rrrr w MySQL

  3. jak mogę uzyskać tablicę ostatnio wstawionych identyfikatorów rekordów?

  4. Mysql zmienia domyślny zestaw znaków tabeli na zestaw znaków bazy danych

  5. Jak wstawić dane z jednej tabeli bazy danych do innej tabeli bazy danych w Mysql