bindParamとbindValueの違い[備忘録]
自分の勉強用です。
bindParamとbindValueとは
PHPで使用されるメソッド。DB管理システムの準備済みステートメントにパラメーターをバインド(結わえ付ける)する。
bindParamとbindValueの主な違いは、変数を準備済みステートメントにバインドする方法。
bindValueとは
変数の値を準備済みステートメントにバインドする。
値は、ステートメントの実行時にDBに送信されますが、変数が後で変更されても送信した値は変更されません。
後は、配列でキー指定した値をそのまま準備済みステートメントに埋め込むことが出来ます。
bindParamとは
変数への参照を準備済みステートメントにバインドします。
これは後で変数が変更された場合、ステートメントの実行時に新しい値がDBに送信されることを意味します。
bindValueとbindParamの使い分けについて
つまり、bindValueは特定の値をステートメントにバインドする際に使用され、bindParamは参照を変数にバインドする場合に使用され、後でその値を更新してDBに送信できるようになる。
今回でいうと、掲示板でユーザーが入力した値を$_POSTで受け取って、そのままPDOでDBにINSERTしたいので、ユーザーの入力項目をいちいち変数に代入して、bindParamに埋め込む必要はないのかなと。
また、一旦変数に代入し直すことにより、余分な処理が生まれ可読性も下がるし、このユーザーの入力した値は処理の中で変更される可能性があるのか?など、読み手を混乱させるなあと。
素直にbindValueを使うのが良いと自分の中で結論付けた。
bindValueで$_POSTで受け取った値をバインドするコードが下記↓
配列でキー指定した値をそのままバインドしている。