Fehler bei der Parameterkonvertierung: Slices werden in der Abfrage nicht unterstützt
Bei der Verwendung von lib/pq zum Ausführen von SQL-Abfragen ist es wichtig sicherzustellen, dass die Parametertypen vorhanden sind unterstützt. In einem Fall ist beim folgenden Code ein Fehler aufgetreten:
somevars := []int{1, 2, 3, 4} rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 IN(,,,);", somevars)
Die Fehlermeldung lautete: „sql: Converting argument $1 type: unsupported type []int, a segment of int“. Dieser Fehler macht deutlich, dass lib/pq Slices nicht direkt als Argumente verarbeiten kann.
Lösung: Verwendung von pq.Array
Um dieses Problem zu beheben, kann pq.Array verwendet werden. Diese Funktion wandelt ein Go-Slice in ein Postgres-ARRAY um, das dann von der Abfrage erkannt wird.
Der geänderte Code unten zeigt dies:
somevars := []int{1, 2, 3, 4} rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 = any();", pq.Array(somevars))
Durch die Verwendung von pq.Array wird das Slice in ein ARRAY umgewandelt, sodass es als gültiges Argument in der Abfrage verwendet werden kann. Dies ermöglicht eine nahtlose Ausführung von Abfragen mit Slice-Argumenten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Slice-Argumenten in lib/pq-SQL-Abfragen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!