Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man mit mysqli-vorbereiteten Anweisungen effizient dynamische LIKE-Abfragen erstellen?

Wie kann man mit mysqli-vorbereiteten Anweisungen effizient dynamische LIKE-Abfragen erstellen?

Linda Hamilton
Freigeben: 2024-12-03 08:23:10
Original
219 Leute haben es durchsucht

How to Efficiently Build Dynamic LIKE Queries with mysqli Prepared Statements?

Dynamische LIKE-Abfragen mit mysqli-vorbereiteten Anweisungen

Diese Frage befasst sich mit dem Problem der Erstellung einer vorbereiteten Anweisung mit einer variablen Anzahl von LIKE-Bedingungen basierend auf Benutzereingaben. Der bereitgestellte PHP-Code versucht, die Anweisung zu erstellen, es liegt jedoch ein Fehler im Zusammenhang mit der Formatierung der LIKE-Klauseln vor.

Das Hauptproblem liegt darin, wo die Prozentzeichen (%) um die Parameter (?) platziert werden. in den LIKE-Klauseln. Anstatt die Parameter zu umschließen, sollten die Prozentzeichen die Platzhalter umgeben, wie unten gezeigt:

foreach ( $search_exploded as $search_each ) {
    $x ++;
    if ( $x == 1 ) {
        $construct .= "name LIKE %??%";
    } else {
        $construct .= " or name LIKE %??%";
    }
}
Nach dem Login kopieren

Diese Korrektur stellt sicher, dass die Parameterwerte (z. B. „mein Name“) korrekt an die LIKE-Klauseln gebunden sind .

Zusätzlich verwendet der Code eine verkettete Zeichenfolge ($construct), um die WHERE-Klausel zu erstellen. Ein effizienterer und sichererer Ansatz ist jedoch die Verwendung eines bind_param()-Platzhalterarrays für alle Parameter, wie unten gezeigt:

$where_params = [];
foreach ( $search_exploded as $search_each ) {
    $where_params[] = "%{$search_each}%";
}

$query = "SELECT * FROM info WHERE name LIKE ?";
$stmt = mysqli_prepare( $conn, $query );
mysqli_stmt_bind_param( $stmt, "s", ...$where_params );
Nach dem Login kopieren

Diese Methode verarbeitet problemlos eine beliebige Anzahl von LIKE-Bedingungen und eliminiert das Risiko einer SQL-Injection Schwachstellen.

Mit diesen Änderungen kann die dynamische LIKE-Abfrage korrekt nach Datensätzen suchen, die auf mehreren benutzerdefinierten Kriterien basieren.

Das obige ist der detaillierte Inhalt vonWie kann man mit mysqli-vorbereiteten Anweisungen effizient dynamische LIKE-Abfragen erstellen?. 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