ホームページ >データベース >mysql チュートリアル >定数を使用すると `bindParam` が失敗するのはなぜですか? 代わりに `bindValue` を使用するにはどうすればよいですか?
bindParam を定数とともに使用する場合の「パラメーター 2 を参照で渡すことはできません」エラーを解決する
コード スニペットで、「パラメーター 2 を参照で渡すことはできません」というエラーが発生します。定数値を指定してbindParamを使用しようとするときは、パラメータ2を参照で渡します(例: PDO::PARAM_NULL)。このエラーは、定数値を渡すときに、bindParam にバインド先の変数が必要なために発生します。
この問題を解決するには、bindParam の代わりに bindingValue を使用する必要があります。 bindValue は、変数ではなく値をパラメーターに直接バインドします。修正されたコードは次のとおりです:
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
注: bindingValue(':param', null, PDO::PARAM_NULL) を使用したくなるかもしれませんが、このアプローチは常に機能するとは限りません。 。代わりに、この例では PDO::PARAM_INT などの明示的な型を使用することをお勧めします。
以上が定数を使用すると `bindParam` が失敗するのはなぜですか? 代わりに `bindValue` を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。