Heim > Backend-Entwicklung > PHP-Tutorial > Wie löse ich den Fehler „Es wird erwartet, dass es sich um eine Referenz handelt' in mysqli bind_param()?

Wie löse ich den Fehler „Es wird erwartet, dass es sich um eine Referenz handelt' in mysqli bind_param()?

Susan Sarandon
Freigeben: 2024-12-13 10:57:15
Original
170 Leute haben es durchsucht

How to Solve the

Behandlung des Fehlers „Erwartet eine Referenz zu sein“ in mysqli bind_param()

Die Fehlermeldung „Parameter 3 to mysqli_stmt::bind_param( ) wird als Referenz erwartet, Wert angegeben“ entsteht, wenn ein Wert an eine vorbereitete Anweisung gebunden wird. Um dieses Problem zu beheben, muss der bereitgestellte Wert eine Referenz auf eine tatsächliche Variable und nicht der Wert selbst sein.

Im bereitgestellten Codeausschnitt enthält das Array $params Werte, die keine Referenzen sind. Um die Werte korrekt zu binden, können Sie den folgenden Ansatz verwenden:

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$param_type = "isss";

// PHP 7+
$sql_stmt = mysqli_prepare($mysqli, $query);
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

// PHP 5.6 - 7.0
$sql_stmt = mysqli_prepare($mysqli, $query);
$arr = array($sql_stmt, $param_type);
foreach ($params as $param) {
    $arr[] = &$param;
}
call_user_func_array('mysqli_stmt_bind_param', $arr);

mysqli_stmt_execute($sql_stmt);
Nach dem Login kopieren

Verwendung von Referenzen

In PHP 5.3 und niedriger sind Referenzen für die Bindung von Werten nicht erforderlich zu einer vorbereiteten Stellungnahme. Ab PHP 5.4 sind Referenzen jedoch obligatorisch. Der Grund für diese Änderung besteht darin, unerwünschtes Kopieren von Variablen und potenzielle Speicherlecks zu verhindern.

Durch die Verwendung von Referenzen wird der Bindungsprozess effizienter, da die gebundenen Werte direkt geändert werden, sodass keine zusätzlichen Variablenzuweisungen erforderlich sind.

Fazit

Denken Sie daran, dass Sie übergeben müssen, wenn Sie mysqli bind_param() mit Werten verwenden, die keine Referenzen sind Verwenden Sie sie als Referenzen oder verwenden Sie alternative Ansätze, um Werte richtig zu binden. Dies gewährleistet eine effiziente und fehlerfreie Ausführung Ihrer SQL-Abfragen.

Das obige ist der detaillierte Inhalt vonWie löse ich den Fehler „Es wird erwartet, dass es sich um eine Referenz handelt' in mysqli bind_param()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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