Heim >Datenbank >MySQL-Tutorial >Warum schlägt „bindParam' mit konstanten Werten im PDO fehl?

Warum schlägt „bindParam' mit konstanten Werten im PDO fehl?

Barbara Streisand
Barbara StreisandOriginal
2024-12-05 03:21:10999Durchsuche

Why Does `bindParam` Fail with Constant Values in PDO?

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!

Stellungnahme:
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
Vorheriger Artikel:IT-Projektmanagement-ToolsNächster Artikel:IT-Projektmanagement-Tools