Ошибка выполнения запроса с параметрами в golang с драйвером mysql

Я создал функцию, которая выполняет запрос в базе данных mysql. Я использую этот пакет "github.com/go-sql-driver/mysql"

но если я запускаю это:

...
err := database.ExecuteSql("INSERT INTO xxx(field1, field2, field3) VALUES(?, ?, ?)", "field1", 123, time.Now())
...
func ExecuteSql(cmd string, , args ...interface{}) error {
  ctx := context.Background()
  _, err := db.ExecContext(ctx, cmd, args)
  ctx.Done()
  ...
}

он возвращает мне «sql: преобразование аргумента типа $ 1: неподдерживаемый тип [] интерфейс {}, часть интерфейса»

ты пробовал _, err := db.ExecContext(ctx, cmd, args...)?

Emin Laletovic 26.12.2020 12:00

Ты прав!!! спасибо, опубликуйте это, и я отмечу как правильное!!

Matteo Zambon 26.12.2020 13:23
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
2
1 012
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы выполняете метод следующим образом:

_, err := db.ExecContext(ctx, cmd, args)

вы передаете args только как один []interface{} аргумент. Срезы не поддерживаются в качестве аргументов для метода ExecContext, если только это не []byte.

Вам нужно использовать оператор распаковки с args:

_, err := db.ExecContext(ctx, cmd, args...)

Другие вопросы по теме