Optionen
string
Die Verbindungszeichenkette zur Datenbank (z.B.
mysql://user:pass@host:port/dbname).string
erforderlich
Das SQL-Statement, das ausgeführt werden soll. Werte aus den Argumenten werden
über die Platzhalter
:1 bis :10 eingesetzt. Setzen Sie Platzhalter nicht in
Anführungszeichen.Platzhalter im SQL-Statement
Die Platzhalter:1 bis :10 verweisen auf die Argumente argument1 bis argument10. Maßgeblich ist dabei die Nummer, nicht die Reihenfolge im Statement.
Die Werte werden als Parameter an die Datenbank übergeben und dort ausschließlich als Werte behandelt, nicht als Teil des Statements. Das verhindert SQL-Injection und macht ein eigenes Maskieren oder Quoten unnötig.
Daraus ergeben sich drei Regeln:
- Platzhalter stehen immer ohne Anführungszeichen im Statement:
WHERE kunde = :1ist korrekt,WHERE kunde = ':1'nicht. - Platzhalter stehen nur für Werte. Tabellen- und Spaltennamen müssen fest im Statement hinterlegt sein.
- Zusätzliche Zeichen wie Wildcards werden an den Platzhalter angehängt, statt in ihn hineingeschrieben zu werden.
Suche mit LIKE
Die Prozentzeichen gehören als eigenständiger Text in das Statement und werden mit dem Platzhalter verbunden:WHERE kunde LIKE '%:1%'.
Datums- und Zahlenwerte
Argumente werden immer als Text übergeben. Verwenden Sie für Datumswerte das Formatyyyy-mm-dd:
>= für den Beginn und < für das Ende ab. Bei Spalten mit Uhrzeit fehlen sonst die Einträge des letzten Tages. In PostgreSQL können Sie die Umwandlung mit :2::date ausdrücklich im Statement vornehmen, in MySQL mit CAST(:2 AS DATE).
Argumente
string
erforderlich
Wert für den ersten Parameter im SQL-Statement.
string
Wert für den zweiten Parameter im SQL-Statement.
string
Wert für den dritten Parameter im SQL-Statement.
string
Wert für den vierten Parameter im SQL-Statement.
string
Wert für den fünften Parameter im SQL-Statement.
string
Wert für den sechsten Parameter im SQL-Statement.
string
Wert für den siebten Parameter im SQL-Statement.
string
Wert für den achten Parameter im SQL-Statement.
string
Wert für den neunten Parameter im SQL-Statement.
string
Wert für den zehnten Parameter im SQL-Statement.
Beispiel
Die folgende Abfrage sucht Verträge eines Kunden, deren Laufzeit in einem bestimmten Zeitraum endet. Der Kundenname wird als Teilbegriff gesucht, der Zeitraum über zwei Datumswerte eingegrenzt. Optionquery:
Fehlerbehebung
Die Abfrage liefert keine Daten, obwohl sie direkt auf der Datenbank funktioniert
Die Abfrage liefert keine Daten, obwohl sie direkt auf der Datenbank funktioniert
Prüfen Sie, ob die Platzhalter in Anführungszeichen stehen.
':1' wird als
fester Text ausgeführt und nicht durch das Argument ersetzt. Schreiben Sie
stattdessen :1 und verbinden Sie Wildcards mit CONCAT.Die Abfrage schlägt fehl, sobald ein optionales Argument leer bleibt
Die Abfrage schlägt fehl, sobald ein optionales Argument leer bleibt
Es werden nur die Platzhalter ersetzt, für die ein Argument gefüllt ist.
Verwenden Sie im Statement ausschließlich Nummern, für die auch Werte
übergeben werden.
Ein Datumsfilter greift nicht wie erwartet
Ein Datumsfilter greift nicht wie erwartet
Übergeben Sie Datumswerte im Format
yyyy-mm-dd. Bei Spalten mit Uhrzeit
grenzen Sie den Zeitraum mit >= und < ein, damit die Einträge des
letzten Tages enthalten sind.