Executing Statements with Exec
Exec bilan buyruqlarni bajarish
Natija qatorlarini qaytarmaydigan buyruqlar (INSERT, UPDATE, DELETE) uchun db.Exec ishlatiladi. U nechta qator o'zgarganini va (agar drayver qo'llab-quvvatlasa) yangi qatorning ID'sini beradi.
result, err := db.Exec(
"INSERT INTO users (name, age) VALUES (?, ?)",
"Aziz", int64(21),
)
if err != nil {
fmt.Println("xato:", err)
return
}
id, _ := result.LastInsertId()
affected, _ := result.RowsAffected()
fmt.Println(id, affected)? belgilari — parametrlangan so'rov joylari (placeholder). Qiymatlarni to'g'ridan-to'g'ri matn ichiga qo'shish ("...VALUES ("+name+")") o'rniga, ularni alohida argument sifatida berish — SQL injection hujumidan himoya qiladi (buni haqiqiy loyihada hech qachon buzmang). result.LastInsertId() va result.RowsAffected() — bajarilgan amal haqidagi qo'shimcha ma'lumot.
>_ Exercise
Yangi foydalanuvchi qo'shing va natijani tekshiring.
- •db.Exec bilan "INSERT INTO users (name, age) VALUES (?, ?)" ni "Dilnoza", int64(19) bilan bajaring
- •RowsAffected() ni chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
db.Exec natija qatorisiz buyruqlar (INSERT/UPDATE/DELETE) uchun ishlatiladi; ? parametrlari qiymatlarni xavfsiz uzatadi (SQL injection'dan himoya).
NEXT UP
Querying Multiple Rows
$ go run main.go
Kodingizni ishga tushiring