Cách UPDATE dữ liệu database MySQL bằng Golang
Hướng dẫn cách cập nhật dữ liệu trong MySQL database bằng Golang sử dụng Prepared Statements với nhiều tham số để đảm bảo tính bảo mật và hiệu quả.
Trong bài viết này, bạn sẽ học cách sử dụng Golang để thực hiện câu lệnh UPDATE dữ liệu trong MySQL với Prepared Statements có nhiều tham số. Phương pháp này giúp tránh các lỗ hổng bảo mật như SQL Injection.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Kết nối đến database MySQL
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test_db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Câu lệnh UPDATE với Prepared Statement
stmt, err := db.Prepare("UPDATE students SET name=?, age=? WHERE id=?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
// Thực thi câu lệnh với nhiều tham số
res, err := stmt.Exec("John Doe", 22, 1)
if err != nil {
log.Fatal(err)
}
// Kiểm tra số hàng đã được cập nhật
rowsAffected, err := res.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Số hàng đã được cập nhật: %d\n", rowsAffected)
}
Giải thích chi tiết từng dòng code:
import (...)
: Nhập các gói cần thiết cho chương trình nhưdatabase/sql
vàfmt
.db, err := sql.Open(...)
: Kết nối đến MySQL database với thông tin kết nối.defer db.Close()
: Đảm bảo rằng kết nối database sẽ được đóng sau khi kết thúc.stmt, err := db.Prepare(...)
: Chuẩn bị câu lệnh UPDATE với Prepared Statement.defer stmt.Close()
: Đảm bảo rằng Prepared Statement sẽ được đóng.res, err := stmt.Exec(...)
: Thực thi câu lệnh UPDATE với các tham số truyền vào.rowsAffected, err := res.RowsAffected()
: Lấy số lượng hàng đã được cập nhật và in ra màn hình.
Yêu cầu hệ thống:
- Golang 1.16+
- Thư viện MySQL driver:
github.com/go-sql-driver/mysql
Cách cài đặt các thư viện để chạy được đoạn mã Golang trên:
Sử dụng lệnh sau để cài đặt thư viện:
go get -u github.com/go-sql-driver/mysql
Lời khuyên:
- Luôn sử dụng Prepared Statements để tránh SQL Injection.
- Kiểm tra kết nối đến database trước khi thực hiện các câu lệnh SQL.