ホームページ > バックエンド開発 > Golang > Go で「db.Query()」を使用して MySQL の結果を動的に並べ替える方法

Go で「db.Query()」を使用して MySQL の結果を動的に並べ替える方法

Susan Sarandon
リリース: 2024-12-23 05:47:31
オリジナル
205 人が閲覧しました

How to Dynamically Order MySQL Results in Go Using `db.Query()`?

MySQL を使用して Golang で動的に並べ替える方法

データベースの結果を動的に並べ替えることは、灵活なデータ取得には不可欠です。ただし、Golang の db.Select() メソッドを通じて MySQL を操作する場合、プレースホルダーを使用して並べ替えようとすると問題が発生する可能性があります。

問題:

ORDER でのプレースホルダーの使用BY 句は、フィルタ パラメータと同様に、明らかな問題がないまま順序付けが失敗することがよくあります。エラー。

解決策:

ただし、プレースホルダーを使用して並べ替えパラメータを直接指定することはできません。別の方法として、fmt.Sprintf() を使用してクエリ テキストを動的に組み立てる方法があります。例:

package main

import (
    "fmt"
    "log"
    "regexp"

    "github.com/go-sql-driver/mysql"
)

func main() {
    // Connect to the database.
    db, err := mysql.Open("mysql", "username:password@tcp(localhost:3306)/database_name")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Get the column name to sort by from a user input.
    // For safety, sanitize the input using a regular expression or other appropriate method.
    ordCol := "title"

    // Check if the column name is valid for use in an ORDER BY clause.
    valid := regexp.MustCompile("^[A-Za-z0-9_]+$")
    if !valid.MatchString(ordCol) {
        log.Fatalf("Invalid column name: %s", ordCol)
    }

    // Create the dynamic query string.
    qtext := fmt.Sprintf("SELECT * FROM Apps ORDER BY %s DESC", ordCol)

    // Execute the query.
    rows, err := db.Query(qtext)
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // Iterate over the results.
    for rows.Next() {
        // Access column values here.
    }
}
ログイン後にコピー

セキュリティに関する考慮事項:

クエリ文字列を動的に組み立てる場合、SQL インジェクションから保護することが重要です。ユーザー入力がクエリ テキストに含まれている場合は、常に検証してサニタイズします。データベースの整合性を損なう可能性のある悪意のある文字や SQL 構文が含まれていないことを確認してください。

以上がGo で「db.Query()」を使用して MySQL の結果を動的に並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート