第9章 データベース連携 / 第5回 模擬試験
PHPのbindValueメソッドとbindParamメソッドの違いに関する次の記述のうち、正しいものはどれか。
`bindValue()`は値を即座にバインドし、`bindParam()`は変数を参照渡しでバインドし実行時の値を使う。
正解
`bindValue()`と`bindParam()`は全く同じ動作をする、名前が違うだけの関数である。
`bindParam()`は数値型のみバインド可能で、文字列はバインドできない。
`bindValue()`はSQLインジェクション対策にはならない。
解説
`bindValue()`は呼び出し時点の値を固定してバインドしますが、`bindParam()`は変数への参照を渡すため、`execute()`実行時点でのその変数の値が使われます。(参照: 独習PHP 第4版 第9章 データベース連携 9.7.2節 bindValueメソッドとbindParamメソッド p.461〜464)