bindParam-Fehler mit konstanten Werten in PDO
Beim Versuch, bindParam mit einem konstanten Wert wie PDO::PARAM_NULL zu verwenden, kann es sein, dass Entwickler Es kommt der Fehler „Parameter 2 kann nicht als Referenz übergeben werden.“
Code-Snippet mit dem Fehler
try { $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); } catch(PDOException $e) { ... } $stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem
Lösung
Der Fehler tritt auf, weil bindParam eine Variable als Referenz verwendet und beim Aufruf keinen Wert abruft. Die richtige Methode zum Binden eines konstanten Werts ist bindValue.
Korrigierter Code
$stmt->bindValue(':v1', null, PDO::PARAM_INT);
Hinweis:
Verwendung vermeiden bindValue(':param', null, PDO::PARAM_NULL), da dies möglicherweise nicht der Fall ist zuverlässig.
Das obige ist der detaillierte Inhalt vonWarum schlägt „bindParam' mit konstanten Werten im PDO fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!