Dynamisches Binden von MySQL-Bindungsparametern in PHP
Wie Sie herausgefunden haben, ist die Methode bind_param in der MySQLi-Erweiterung von PHP enthalten kann hinsichtlich der dynamischen Verarbeitung mehrerer Parameter oder parameterloser Abfragen eingeschränkt sein. Nachfolgend finden Sie Strategien zur Behebung dieses Problems:
Verwendung von call_user_func_array
Mit dem folgenden Codeausschnitt können Sie ein Array von Parametern dynamisch erstellen und binden:
if (strnatcmp(phpversion(), '5.3') >= 0) { $refs = array(); foreach ($arr as $key => $value) $array_of_params[$key] = &$arr[$key]; call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params); }
Mit PHP 5.6 Syntax
In PHP 5.6 und höher können Sie den Entpackoperator und die Methode get_result() nutzen:
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(); }
Beispiel:
$mysqli = new database(DB_HOST, DB_USER, DB_PASS, DB_NAME); $output = new search($mysqli); $sql = "SELECT * FROM root_contacts_cfm WHERE root_contacts_cfm.cnt_id = ? AND root_contacts_cfm.cnt_firstname = ? ORDER BY cnt_id DESC"; $res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
Diese Lösungen bieten mehr Flexibilität und dynamische Bindungsmöglichkeiten für Ihr MySQL Abfragen.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Parameter in PHP dynamisch binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!