Vorbereitete Anweisungen für Variablenlisten variabler Größe in MySQL mit PHP
Viele Datenbankoperationen erfordern die Fähigkeit, mit einer variablen Anzahl von Argumenten abzufragen . In einer Personendatenbank könnte eine Abfrage beispielsweise Datensätze auswählen, deren ID sich in einer bestimmten Liste befindet. Allerdings kann die Anzahl der IDs in der Liste variieren.
Es gibt mehrere mögliche Lösungen für dieses Problem.
Lösung 1: Dummy-Werte
Ein Ansatz besteht darin, eine Anweisung zu erstellen, die eine feste Anzahl von Variablen akzeptiert, und die verbleibenden Variablen mit Dummy-Werten zu füllen, die garantiert nicht in der Tabelle enthalten sind. Diese Strategie kann jedoch für Listen mit einer großen Anzahl von Dummy-Werten ineffizient sein.
Lösung 2: Erstellen dynamischer Abfragen
Eine andere Möglichkeit besteht darin, die Verwendung vorbereiteter Anweisungen und zu vermeiden Stattdessen wird die Abfragezeichenfolge dynamisch erstellt und sorgfältig auf mögliche Injektionsangriffe geprüft. Dieser Ansatz erfordert Wachsamkeit, um sicherzustellen, dass die resultierende Abfrage sicher und frei von Exploits ist.
Effiziente Lösungen
Für eine effizientere Handhabung von Variablenlisten variabler Größe:
Lösung mit temporärer Tabelle:
Erstellen Sie eine temporäre Tabelle, in die Sie jede ID einfügen und dann Führen Sie einen Join dagegen in der Abfrage aus.
Lösung mit dynamischer Anweisungsvorbereitung:
Verwenden Sie die Sprintf-Funktion, um dynamisch eine vorbereitete Anweisung mit der entsprechenden Anzahl von Platzhaltern zu erstellen. Führen Sie es dann mit den bereitgestellten Parametern aus:
$dbh=new PDO($dbConnect, $dbUser, $dbPass); $parms=array(12, 45, 65, 33); $st=$dbh->prepare(sprintf( 'SELECT age, name FROM people WHERE id IN (%s)', implode(',',array_fill(0,count($parms),'?')) )); $st->execute($parms);
Diese Technik sorgt für die Effizienz vorbereiteter Anweisungen und berücksichtigt gleichzeitig eine variable Anzahl von Argumenten. Die Wahl zwischen der Lösung für temporäre Tabellen und der dynamischen Kontoauszugsvorbereitung hängt von der Größe der Liste ab, wobei letztere besser für kleinere Listen geeignet ist.
Das obige ist der detaillierte Inhalt vonWie kann ich vorbereitete Anweisungen in MySQL mit PHP für Abfragen mit ID-Listen variabler Größe verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!