bindParam に定数を渡す: エラーと解決策
PDO では、bindParam メソッドを使用して、参照によって変数をステートメント パラメーターにバインドできます。ただし、PDO::PARAM_NULL などの定数値をバインドしようとすると、「パラメータ 2 を参照で渡すことができません」というエラーが発生することがあります。
エラーの原因:
bindParam には、参照によってパラメータにバインドされる 2 番目の引数として変数が必要です。定数値を直接渡そうとすると、定数は参照によって渡すことができないため、エラーが発生します。
解決策:
定数値をステートメントのパラメータにバインドするには、bindValue を使用します。代わりにメソッドを使用します。 bindValue は変数を値でバインドします。つまり、参照を作成するのではなく、メソッドの呼び出し時に値をコピーします。
修正コード:
$stmt->bindValue(':v1', null, PDO::PARAM_NULL);
を使用します。 bindValue を使用すると、「パラメータ 2 を参照で渡すことができません」というエラーが発生することなく、定数値をステートメントのパラメータに正しくバインドできます。 null 値には、PDO::PARAM_INT や ''.
ではなく、必ず PDO::PARAM_NULL を使用してください。以上がPDO の定数で「bindParam」が失敗する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。