GR ~日々思うことを書いていく~

プレイしたゲームに関する雑記や思考整理

bindParam() に直接値を入れたらダメ

PHP Data Objects (PDO) で以下のように書いています。

 
$setData = 1;

$sql = sprintf('UPDATE %s SET valid_flag=:valid_flag WHERE id=:id', $this->name);
$sth = $this->db->prepare($sql);
$sth->bindParam(':valid_flag', $setData, PDO::PARAM_INT);
$sth->bindParam(':id', $Id, PDO::PARAM_INT);
$sth->execute();

セットする値を直接を入れられないかと以下のように試したところ

$sth->bindParam(':valid_flag', 1, PDO::PARAM_INT);

bindParam の2番目のパラメータに直接値を入れることはできず 以下のエラーが出ます。

Fatal error: Cannot pass parameter 2 by reference

説明には 「SQL ステートメントパラメータにバインドする PHP 変数名を指定します。」 と書いてあり、

一度PHP変数に入れてからセットすれば通ります。

 

★参考リンク

PDOStatement::bindParam

お問い合わせフォーム     プライバシーポリシー