Heim >Backend-Entwicklung >PHP-Tutorial >Warum wirft mysqli_stmt::bind_param() „Parameter ... wird voraussichtlich eine Referenz sein, Wert angegeben' aus?
mysqli bind_param()-Fehler: Übergabe von Werten anstelle von Referenzen
Der Fehler „Parameter 3 an mysqli_stmt::bind_param() wird erwartet eine Referenz, Wert gegeben“ entsteht, wenn mysqli_stmt::bind_param() ein Array von übergeben wird Werte anstelle eines Arrays von Verweisen auf diese Werte.
Im bereitgestellten PDO-Code:
$params = array(1,"2","3","4");
Das $params-Array enthält Werte und keine Verweise auf diese Werte. Um dies zu beheben, verwenden Sie &, um Referenzen zu erstellen:
$params = array(1,&"2", &"3", &"4");
Ähnlich gilt im OOP-Code:
array_unshift($params, $param_type);
Diese Zeile stellt die Zeichenfolge $param_type voran an den Anfang des $params-Arrays, es werden jedoch keine Verweise auf die Parameterwerte erstellt. Um Referenzen zu erstellen, verwenden Sie das &-Zeichen:
array_unshift($params, $param_type); foreach ($params as $key => $value) { $params[$key] =& $value; }
In PHP-Versionen 5.6 und höher können Sie den Spread-Operator (...) verwenden. ), um das $params-Array als einzelne Argumente zu übergeben, ohne manuell Referenzen erstellen zu müssen:
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params); $insert_stmt->bind_param($param_type, ...$params);
Durch Übergabe von Referenzen oder Verwendung des Spreads Mit dem Operator können Sie sicherstellen, dass mysqli_stmt::bind_param() ein Array von Referenzen auf die Parameterwerte erhält und so den Fehler behebt.
Das obige ist der detaillierte Inhalt vonWarum wirft mysqli_stmt::bind_param() „Parameter ... wird voraussichtlich eine Referenz sein, Wert angegeben' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!