Heim >Backend-Entwicklung >Golang >Wie frage ich MySQL mit einem ID-Slice mithilfe von SQLx ab?

Wie frage ich MySQL mit einem ID-Slice mithilfe von SQLx ab?

DDD
DDDOriginal
2024-12-05 12:34:10901Durchsuche

How to Query MySQL with a Slice of IDs Using SQLx?

Verwenden von SQLx zum Abfragen von MySQL nach Werten in einem Slice

Beim Abfragen einer MySQL-Tabelle nach in einem Slice enthaltenen Werten können Benutzer auf einen Fehler ähnlich dem folgenden stoßen:

sql: converting Exec argument #0's type: unsupported type []int, a slice

Dieses Problem tritt auf, weil SQLx Abfragen mit einem Slice als Argument nicht grundsätzlich unterstützt. Es bietet jedoch eine Lösung durch seine In()-Funktion.

Lösung mit In()

Um diesen Fehler zu beheben, können die folgenden Schritte unternommen werden:

  1. Bereiten Sie die Abfrage mit In() vor, um das Slice als Argument einzuschließen:

    query, args, err := sqlx.In("SELECT * FROM quote WHERE qid IN (?)", qids)
    if err != nil {
     log.Fatal(err)
    }
  2. Neu binden die Abfrage, um sie mit dem Datenbank-Backend kompatibel zu machen:

    query = database.SQL.Rebind(query)
  3. Führen Sie die Abfrage mit Select() aus:

    err = database.SQL.Select(&quotes, query, args...)

Kombination in einer Zeile

Der gesamte Prozess kann in einem einzigen vereinfacht werden Zeile:

err = database.SQL.Select(&quotes, database.SQL.Rebind(query), args...)

Ressourcen

Weitere Beispiele und Dokumentation finden Sie auf der offiziellen SQLx-Website: http://jmoiron.github.io/sqlx/

Das obige ist der detaillierte Inhalt vonWie frage ich MySQL mit einem ID-Slice mithilfe von SQLx ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn