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