Das dynamische Sortieren von Datenbankergebnissen ist für den Datenabruf unerlässlich. Wenn Sie jedoch mit MySQL über die db.Select()-Methode von Golang arbeiten, können Versuche, mithilfe von Platzhaltern zu sortieren, auf Herausforderungen stoßen.
Das Problem:
Verwendung von Platzhaltern in der ORDER Die BY-Klausel führt, ähnlich wie Filterparameter, häufig zu einer erfolglosen Bestellung ohne erkennbare Fehler.
Die Lösung:
Da Platzhalter nicht zur direkten Angabe von Sortierparametern verwendet werden können, besteht ein alternativer Ansatz darin, den Abfragetext mithilfe von fmt.Sprintf() dynamisch zusammenzustellen. Zum Beispiel:
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. } }
Sicherheitsüberlegungen:
Beim dynamischen Zusammenstellen von Abfragezeichenfolgen ist der Schutz vor SQL-Injection von entscheidender Bedeutung. Überprüfen und bereinigen Sie Benutzereingaben immer, wenn sie im Abfragetext enthalten sind. Stellen Sie sicher, dass es keine schädlichen Zeichen oder SQL-Syntax enthält, die die Datenbankintegrität gefährden könnten.
Das obige ist der detaillierte Inhalt vonWie ordne ich MySQL-Ergebnisse in Go mithilfe von „db.Query()' dynamisch an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!