Sobes.tech
Middle — Middle+

Shartlar va parametrlarni dinamik ravishda o'zgartirish imkoniyatiga ega bo'lgan SQL SELECT so'rovini real vaqtda shakllantirish uchun qanday yondashuvlar mavjud?

sobes.tech AI

AIdan javob

Go'da dinamik tarzda SQL so'rovlarini yaratish uchun bir nechta yondashuvlar mavjud:

  1. Qatorlarni qo'shish — eng oddiy, lekin xavfli usul, SQL injektsiyalariga moyil.

  2. Parametrli so'rovlar dan foydalanish database/sql paketlari bilan va argumentlarni ? yoki $1 orqali o'tkazish.

  3. So'rovlar quruvchilari (query builders) — shartlar, tartiblar va boshqalar bilan dasturiy ravishda so'rovlar yaratishga imkon beradigan kutubxonalar.

Masterminds/squirrel kutubxonasi bilan misol:

import (
    "github.com/Masterminds/squirrel"
    "database/sql"
    _ "github.com/lib/pq"
)

func buildQuery(age int, active bool) (string, []interface{}, error) {
    qb := squirrel.Select("id", "name").From("users")

    if age > 0 {
        qb = qb.Where(squirrel.Gt{"age": age})
    }
    if active {
        qb = qb.Where(squirrel.Eq{"active": true})
    }

    return qb.ToSql()
}

func main() {
    db, _ := sql.Open("postgres", "connection_string")
    query, args, _ := buildQuery(30, true)
    rows, _ := db.Query(query, args...)
    defer rows.Close()
    // natijalarni qayta ishlash
}

Bu yondashuv shartlar va parametrlarni dinamik ravishda qo'shishga imkon beradi va xatolar hamda SQL injektsiyalaridan saqlaydi.

Shuningdek, ORM yoki o'zgaruvchi qoplamalar yordamida so'rovlar qurish mumkin.