Vermeiden des Fehlers „Parameter kann nicht als Referenz übergeben werden“ mit bindParam
Beim Arbeiten mit PDO kann der rätselhafte Fehler „Kann nicht übergeben werden“ auftreten Parameter nach Referenz“ bei Verwendung von bindParam mit einem konstanten Wert wie PDO::PARAM_NULL.
Der Grund für diesen Fehler liegt in der Natur von bindParam. Im Gegensatz zu bindValue, das einen Wert zum Zeitpunkt des Aufrufs an einen Parameter bindet, bindet bindParam eine Variable per Referenz. Das bedeutet, dass bindParam eine Variable erwartet, die während der Abfrageausführung geändert werden kann. Die Verwendung eines konstanten Werts wie PDO::PARAM_NULL, der nicht geändert werden kann, löst den Fehler aus.
Um dieses Problem zu beheben, besteht die Lösung darin, bindValue anstelle von bindParam für konstante Werte zu verwenden. bindValue akzeptiert einen Wert als zweiten Parameter und erfordert keine Referenz.
Hier ist ein Beispiel für die korrekte Verwendung von bindValue:
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindValue(':v1', null, PDO::PARAM_INT);
In diesem Fall weist bindValue dem :v1 den Wert null zu Parameter mit dem Datentyp PDO::PARAM_INT.
Beachten Sie, dass in der PHP-Dokumentation zwar die Verwendung vorgeschlagen wird bindValue(':param', null, PDO::PARAM_NULL) verwenden, funktioniert es möglicherweise nicht in allen Fällen. Daher wird empfohlen, stattdessen PDO::PARAM_INT oder den entsprechenden Datentyp zu verwenden.
Das obige ist der detaillierte Inhalt vonWarum gibt PDO den Fehler „Parameter kann nicht als Referenz übergeben werden' aus und wie kann ich ihn mit bindValue beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!