基本的にはPreparedStatementに値を設定するメソッドです。bindValueとは参照渡しになるのが違う。
使いどころとしては以下なんだと思う。(以下のコードはイメージです)
$caps = array("JAPAN" => "Tokyo", "USA" => "Washington DC", "SOUTH KOREA" => "Seoul"); $stmt = $pdo->prepare("update countries set capital = :cap where name = :name"); $key, $val = null; //初期化は欲しいのか? $stmt->bindParam(":name", &$key); //先にbind $stmt->bindParam(":cap", &$val); foreach($caps as &$key => &$val) { $stmt->execute(); //ここではbindしなくていい } unset($key); unset($val);
foreach内でbindValueしなくてもいいから見た目スッキリ、とは思わないけど多分こういう意味なんだよな…。
PreparedStatementが大量にある場合はスッキリするかもしれないけど、その変数が参照かどうかは覚えておかないといけない(参照使うときは常にそうだけど)。
便利なんだけど、何かのタイミングでsyntaxがoffになったりするのはなんとかならんのだろうか。しかしCygwin版とWin32ネイティブ版を同時に使うからかもしれない。
-[1792]% rlwrap -c -q '"' -b "'"'(){}[].,#@;|`"' -m gosh "$@" gosh> (use text.html-lite) #<undef> gosh> (define (esclip iport) (let ((buf (read-line iport))) (cond ((not (eof-object? buf))(display (html-escape-string buf))(newline)(esclip iport))))) esclip gosh> (call-with-input-file "/dev/clipboard" esclip) <link rel="stylesheet" type="text/css" href="jquery.powertip.css" /> #<undef> gosh> #
これでtDiaryにコピペ楽ちんです。入力終わるまで読むのは頻出。