Heim > Datenbank > MySQL-Tutorial > Wie behandelt man „WHERE IN'-Anweisungen mit Bind-Parametern in SQLite richtig?

Wie behandelt man „WHERE IN'-Anweisungen mit Bind-Parametern in SQLite richtig?

Mary-Kate Olsen
Freigeben: 2025-01-03 00:31:39
Original
928 Leute haben es durchsucht

How to Properly Handle `WHERE IN` Statements with Bind Parameters in SQLite?

Verarbeitung von „WHERE _ IN ___“-Anweisungen in SQLite

Bei Verwendung eines WHERE IN -Anweisung in SQLite ist es wichtig, die korrekte Konstruktion der Anweisung sicherzustellen, um Fehler zu vermeiden. Das Problem tritt auf, wenn die Anzahl der bereitgestellten Bindungen nicht mit der erwarteten Anzahl übereinstimmt, was zu einem ProgrammingError führt.

Um dieses Problem zu beheben, müssen Sie Ihre Anweisung so ändern, dass sie die richtige Anzahl von Fragezeichen (?) enthält Parameter. Zum Beispiel:

statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))
Nach dem Login kopieren

Hier generieren wir mit join([?]*len(list_of_vars))_ eine durch Kommas getrennte Zeichenfolge aus Fragezeichen, die eine ordnungsgemäße Bindung der Parameterwerte ermöglicht. Wenn beispielsweise _list_of_vars ['foo', 'bar'] enthält, lautet die Anweisung wie folgt:

"SELECT * FROM tab WHERE obj IN (?, ?)"
Nach dem Login kopieren

Jetzt können Sie diese Anweisung ausführen, indem Sie list_of_vars als übergeben Parameterwerte:

c.execute(statement, list_of_vars)
Nach dem Login kopieren

Obwohl alternative Methoden existieren können, wird die Verwendung von Bindeparametern empfohlen, um SQL-Injection-Angriffe zu verhindern. Bei umfangreichen Listen kann die Verwendung einer temporären Tabelle für Werte und deren Verknüpfung mit dieser die Effizienz steigern.

Das obige ist der detaillierte Inhalt vonWie behandelt man „WHERE IN'-Anweisungen mit Bind-Parametern in SQLite richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage