Binden eines Arrays von Strings mit einer vorbereiteten mysqi-Anweisung
Bei der Arbeit mit MySQL ist es oft notwendig, ein Array von Werten an ein zu binden WHERE IN-Klausel mit einer vorbereiteten Anweisung. Obwohl diese Aufgabe unkompliziert erscheinen mag, gibt es einige potenzielle Fallstricke, die zu Fehlern führen können.
In diesem Artikel untersuchen wir den richtigen Ansatz zum Binden eines Arrays von Zeichenfolgen mithilfe vorbereiteter MySQL-Anweisungen. Außerdem erläutern wir die erforderlichen Schritte ausführlich und besprechen eine mögliche Lösung.
Was läuft schief?
Das in der Frage bereitgestellte Codebeispiel versucht fälschlicherweise, dies zu tun Binden Sie ein Array von Städten mit bind_param an eine vorbereitete Anweisung. Allerdings erwartet bind_param Skalarwerte (z. B. Strings, Ganzzahlen usw.) als Argumente. Der Versuch, ein Array direkt zu binden, führt zu einem Fehler.
Der richtige Ansatz
Um ein Array von Zeichenfolgen erfolgreich an eine vorbereitete Anweisung zu binden, können wir Folgendes verwenden Schritte:
Beispielcode
Hier ist ein Beispiel für den richtigen Code:
$mysqli = new mysqli("localhost", "root", "root", "db"); if(!$mysqli || $mysqli->connect_errno) { return; } $cities = explode(",", $_GET['cities']); $in = str_repeat('?,', count($cities) - 1) . '?'; $query_str = "SELECT name FROM table WHERE city IN ($in)"; $query_prepared = $mysqli->stmt_init(); if($query_prepared && $query_prepared->prepare($query_str)) { $types = str_repeat('s', count($cities)); $query_prepared->bind_param($types, ...$cities); $query_prepared->execute(); }
Hier Beispielsweise erstellen wir zunächst mit str_repeat eine Zeichenfolge aus Platzhaltern. Diesen Platzhalterstring fügen wir dann in die Abfrage ein und bereiten die Anweisung vor. Beachten Sie, wie wir die einzelnen Elemente des Cities-Arrays mit ...$cities binden und den Datentyp mit str_repeat('s', count($cities)) angeben.
Indem wir diese Schritte befolgen, können wir erfolgreich sein Binden Sie ein Array von Zeichenfolgen an eine von MySQL vorbereitete Anweisung und führen Sie die Abfrage wie vorgesehen aus.
Das obige ist der detaillierte Inhalt vonWie binde ich ein String-Array korrekt an eine von MySQLi vorbereitete Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!