Um dynamische SQL-Anweisungen mit einer variablen Anzahl von Parametern vorzubereiten, stellt die Methode bind_param in PHP oft eine Herausforderung dar. Dieser Artikel führt Sie durch den Prozess der dynamischen Generierung von bind_param-Anweisungen in PHP und untersucht sowohl vorhandene Lösungen als auch mögliche Verbesserungen.
Das bereitgestellte Code-Snippet basiert auf der bind_param-Methode, die ausgeführt wird ein Typbezeichner, gefolgt von einer einzelnen Variablen als Parameter. Um den Mangel an Unterstützung für mehrere Parameter zu beheben, wurde eine benutzerdefinierte Lösung mit call_user_func_array versucht. Es treten jedoch Probleme mit der PHP-Versionskompatibilität auf.
PHP 5.6 führt den Entpackoperator (...) ein, der zur Vereinfachung der dynamischen Bindung genutzt werden kann. Betrachten Sie den folgenden erweiterten Code:
public function get_custom_result($sql, $types = null, $params = null) { $stmt = $this->mysqli->prepare($sql); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) return false; return $stmt->get_result(); }
Durch die Verwendung des Entpackoperators entpackt der Code das $params-Array dynamisch in einzelne Parameter und ersetzt so effektiv die Notwendigkeit mehrerer bind_param-Aufrufe.
Die erweiterte Methode kann wie folgt verwendet werden:
$res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = $res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
Dieses Beispiel bereitet die SQL-Anweisung vor mit zwei Parametern, '1' und 'Tk', und führt die Abfrage aus. Das Ergebnis wird dann abgerufen und angezeigt.
Während der erweiterte Bindungsansatz gut funktioniert, gibt es alternative Strategien, die in Betracht gezogen werden sollten:
Das obige ist der detaillierte Inhalt vonWie kann ich „bind_param'-Anweisungen für MySQLi in PHP dynamisch generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!