Heim >Backend-Entwicklung >PHP-Tutorial >Wie erstellt man sicher dynamische LIKE-Bedingungen in von MySQLi vorbereiteten Anweisungen?
Erstellen Sie SELECT-Abfragen mit dynamischen LIKE-Bedingungen als vorbereitete MySQL-Anweisungen
Bei der Arbeit mit Benutzereingaben bieten vorbereitete Anweisungen eine sichere Möglichkeit, SQL auszuführen Abfragen. Um dynamische Zahlen von LIKE-Bedingungen basierend auf Benutzereingaben zu verarbeiten, ist ein benutzerdefinierter Ansatz erforderlich.
Das Problem
Der angegebene Code zielt darauf ab, eine vorbereitete Anweisung mit einer Variablen zu erstellen Anzahl der LIKE-Bedingungen. Es liegt jedoch ein Fehler vor, bei dem die %-Zeichen nicht um die Parameter, sondern um die Platzhalter platziert werden.
Die Lösung
Um das Problem zu beheben, sollten die %-Zeichen umbrochen werden die Parameter in der Konstruktvariablen. Hier ist der geänderte Code:
foreach ($search_exploded as $search_each) { $x++; if ($x == 1) { $construct .= "name LIKE ?%"; // % now wraps the parameter } else { $construct .= " or name LIKE ?%"; // % now wraps the parameter } }
Dadurch wird eine Konstruktzeichenfolge generiert, die der folgenden ähnelt:
name LIKE %?% or name LIKE %?% or ...
Zusätzliche Verbesserungen
Die bereitgestellten PHP-Snippets nutzen objektorientiertes MySQL anstelle der prozeduralen Syntax. Darüber hinaus stellt die Lösung sicher, dass dynamische WHERE-Klauselausdrücke und Datentypen berücksichtigt werden, sodass keine vorbereitete Anweisung erforderlich ist, wenn keine Bedingungen vorliegen.
Fazit
Durch Befolgen dieser Schritte können Sie effektiv dynamische LIKE-Bedingungen in vorbereiteten MySQL-Anweisungen erstellen und so Ihre SQL-Abfrageverarbeitungsfunktionen erheblich verbessern.
Das obige ist der detaillierte Inhalt vonWie erstellt man sicher dynamische LIKE-Bedingungen in von MySQLi vorbereiteten Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!