第9章 データベース連携 / 第1回 模擬試験
PHPのプリペアドステートメントに関する次の記述のうち、正しいものはどれか。
SQLインジェクション攻撃を防ぐ効果はない。
SQL文とパラメータを分離して扱う。
正解
`bindValue()`と`bindParam()`は全く同じ機能を持つ。
プレースホルダは、名前付きプレースホルダのみが使用できる。
解説
プリペアドステートメントはSQLインジェクション攻撃を防ぐ効果があり、SQL文とパラメータを分離して扱います。`bindValue()`と`bindParam()`は似ていますが、参照渡しと値渡しで動作が異なります。プレースホルダは名前付きと疑問符(`?`)の両方が使用できます。
(参照: 独習PHP 第4版 第9章 データベース連携 9.5節 SQLクエリの発行 / 9.7節 パラメーター値のバインド p.438〜464)