Beim Erstellen von MySQL-vorbereiteten Anweisungen in PHP kann es vorkommen, dass die Anzahl der Parameter in der IN-Klausel unterschiedlich ist. Um diese Situation dynamisch zu bewältigen, sollten Sie den folgenden Ansatz in Betracht ziehen:
Erstellen Sie eine temporäre Tabelle: Fügen Sie jeden Parameter in eine temporäre Tabelle ein und verknüpfen Sie die Tabelle dann in der Abfrage.
Dynamische Spleißmethode:
array_fill
und implode
, um eine IN-Klausel mit Platzhaltern zu erstellen. sprintf
, um Anweisungen mit dynamischen IN-Klauseln vorzubereiten. Das folgende Beispiel demonstriert die dynamische Spleißmethode:
<code class="language-php">$dbh = new PDO($dbConnect, $dbUser, $dbPass); $parms = array(12, 45, 65, 33); $parmcount = count($parms); $inclause = implode(',', array_fill(0, $parmcount, '?')); $sql = 'SELECT age, name FROM people WHERE id IN (%s)'; $preparesql = sprintf($sql, $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);</code>
Diese Methoden bieten eine effiziente Möglichkeit, IN-Klauseln variabler Größe zu verarbeiten und gleichzeitig die Sicherheits- und Leistungsvorteile vorbereiteter Anweisungen beizubehalten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Listen variabler Größe in MySQL-vorbereiteten Anweisungen mit PHP um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!