Зачем нужны prepared statements в Go? Как использовать?

Ответ

Prepared statement - запрос разобран один раз, параметры подставляются безопасно. Защита от SQL-инъекций и переиспользование плана. В Go: db.PrepareContext(ctx, "SELECT ... WHERE id = $1"), затем stmt.QueryContext или ExecContext с аргументами. sql.DB по умолчанию кеширует подготовленные запросы. Не подставлять пользовательский ввод в строку запроса - только через аргументы.

stmt, err := db.PrepareContext(ctx, "SELECT name FROM users WHERE id = $1")
defer stmt.Close()
var name string
err = stmt.QueryRowContext(ctx, id).Scan(&name)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.