Heim > Backend-Entwicklung > PHP-Tutorial > Warum wirft mysqli_stmt::bind_param() „Parameter ... wird voraussichtlich eine Referenz sein, Wert angegeben' aus?

Warum wirft mysqli_stmt::bind_param() „Parameter ... wird voraussichtlich eine Referenz sein, Wert angegeben' aus?

Susan Sarandon
Freigeben: 2024-12-05 09:11:15
Original
693 Leute haben es durchsucht

Why Does mysqli_stmt::bind_param() Throw

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.

PDO-Code

Im bereitgestellten PDO-Code:

$params = array(1,"2","3","4");
Nach dem Login kopieren

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");
Nach dem Login kopieren

OOP-Code

Ähnlich gilt im OOP-Code:

array_unshift($params, $param_type);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Alternative Lösung mit Spread-Operator (PHP 5.6)

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);
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage