Heim >Datenbank >MySQL-Tutorial >Warum schlägt „bindParam' mit Konstanten fehl und wie kann ich stattdessen „bindValue' verwenden?
Behebung des Fehlers „Parameter 2 kann nicht als Referenz übergeben werden“ bei Verwendung von bindParam mit Konstanten
In Ihrem Codeausschnitt wird der Fehler „Kann nicht übergeben“ angezeigt übergeben Sie Parameter 2 als Referenz“, wenn Sie versuchen, bindParam mit einem konstanten Wert zu verwenden (z. B. PDO::PARAM_NULL). Dieser Fehler tritt auf, weil bindParam eine Variable zum Binden benötigt, während Sie einen konstanten Wert übergeben.
Um dieses Problem zu beheben, müssen Sie bindValue anstelle von bindParam verwenden. bindValue bindet einen Wert direkt an den Parameter und nicht an eine Variable. Hier ist der korrigierte Code:
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->bindValue(':v1', null, PDO::PARAM_INT); // Using bindValue with null and explicit type
Hinweis: Sie könnten versucht sein, bindValue(':param', null, PDO::PARAM_NULL) zu verwenden, aber dieser Ansatz funktioniert nicht immer . Stattdessen wird empfohlen, den expliziten Typ zu verwenden, wie in diesem Beispiel PDO::PARAM_INT.
Das obige ist der detaillierte Inhalt vonWarum schlägt „bindParam' mit Konstanten fehl und wie kann ich stattdessen „bindValue' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!