search
New サムネイル GORMでError 1054: Unknown column ‘valueR New サムネイル Goをインストールしてバージョンを確認する(Mac) New サムネイル 新元号・令和の意味を万葉集から理解する:令は「良い」を表す漢字!

PHPのbindParamをforeachするときの注意(foreachのvalueを参照渡しにする)

広告

PDOのbindParamをforeachでまとめたい時がある。

$stmt->bindParam( ':name', $name, PDO::PARAM_STR );
$stmt->bindParam( ':title', $title, PDO::PARAM_STR );
$stmt->bindParam( ':tag', $tag, PDO::PARAM_STR );

foreachは下のようになる。

$array = array( ':name' => $name, ':title' => $title, ':tag' => $tag );
foreach ( $array as $key => &$value ) {
  $stmt->bindParam( $key, $value, PDO::PARAM_STR );
}
unset( $array );

ポイントは2つ。

  • foreachのvalueにアンパサンド(&)をつける
  • foreachの後、foreachで用いた配列をunsetする

&記号をつけると、その変数はC言語と同じく参照渡しになる。

配列のポインタはforeachで回すとずれていくため、最後はunsetでポインタを戻す。&をつけない場合、foreachの最後の変数(上ではtag)のみがbindParamに渡され、nameとtitleのカラムにtagの値が入ってしまう。

unset
(PHP 4, PHP 5, PHP 7)
unset — 指定した変数の割当を解除する
void unset ( mixed $var [, mixed $... ] )

広告

広告

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会

Python入門

Python入門

化学入門

化学入門

漢字辞典

漢字辞典

整数辞典

漢字辞典

Lord Candy

Lord Candy