Как передать ввод от пользователя в запрос INSERT (MySQL)? GO - PullRequest
0 голосов
/ 14 января 2020

начинающий кодер здесь. Я хотел бы знать, как взять пользовательский ввод (сканер) и создать новую строку в базе данных MySQL. Ниже приведен код, который я использую для вставки без запроса ввода пользователя.

func insert(tabel string) {

    login := dbGebruikersnaam + ":" + dbWachtwoord   
    db, err := sql.Open("mysql", login+"@/vanderbinckesdb")

    insert, err := db.Exec("INSERT INTO bakfiets VALUES ( 8, 'TEST', 'TEST', 10, 10, 10 )")
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(insert)
}

Я хотел бы попросить пользователя ввести сами значения с помощью (сканер), если это возможно. Я сделал для него следующую структуру.

package main

type Bakfiets struct {   
    Bakfietsnummer        int   
    Naam                string  
    Type            string  
    Huurprijs       float64  
    Aantal          int  
    Aantal_verhuurd int  
}

1 Ответ

1 голос
/ 14 января 2020

Вы можете передавать параметры на db.Exec. $1, $2, $3... являются заполнителями для них, которые также обеспечивают защиту от SQL инъекции. Как то так:

func insert(b *Bakfiets) error {

    login := dbGebruikersnaam + ":" + dbWachtwoord   
    db, err := sql.Open("mysql", login+"@/vanderbinckesdb")

    insert, err := db.Exec("INSERT INTO bakfiets VALUES ($1, $2, $3, $4, $5, $6)", b.Bakfietsnummer, b.Naam, b.Type, b.Huurprijs, b.Aantal, b.Aantal_verhuurd)
    if err != nil {
        return err
    }
    fmt.Println(insert)
    return nil
}
...