Использую пакет для бд
https://github.com/ziutek/mymysql
есть функция
func new_query(Query string) {
db := mysql.New("tcp", "", "127.0.0.1:3306", "root", "12345", "test")
err := db.Connect()
defer db.Close()
if err != nil {
log.Println("Не удалось подключиться к базе данных")
return
}
stmt, err := db.Prepare(Query)
_, err = stmt.Run()
if err != nil {
log.Println("Не удалось выполнить запрос")
return
}
}
Есть код на golang
Name string="Название"
CreatedBy int=777
query string ="insert into table(Name,CreatedBy) values (?,?)" //????
new_query(query)
Нужно получить `query ="insert into table(Name,CreatedBy) values ("Название",777)"`
Я пробовал подставлять %s , но что-то не разберусь
На оф сайте предлагает сперва делать stmt, err := db.Prepare("insert into X values (?, ?)") , но я хочу сделать универсальную функцию, которой даёшь sql текст, а она его выполняет.А тут,фактически никакого db.Prepare нет-я просто передал текст,который может быть с sql инъекцией...
Если в функцию передать запрос("со вставками"-куда нужно будет подставить) и массив с параметрами, но в каждом запросе может быть своё количество параметров- как их тода перебрать?
И ещё :можно ли с помощью регулярных выражений как-то убрать из string типа спец символы или как-то экранировать, что б не было sql инъекций?
Мне что-то вообще кажется-я изобретаю велосипед)))