bindValueとbindParamの違いが最初はわからなかったのでメモ。
スポンサードサーチ
bindValue
bindValueはprepare文の中にある「?」と値、または変数をバインドします(結びつけます)
以下の例では、変数($name, $score)を用いていますが、値を指定することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$stmt = $db->prepare('insert into users (name, score) values (?, ?)'); $name = 'tanaka'; $stmt->bindValue(1, $name, PDO::PARAM_STR); $score = 80; $stmt->bindValue(2, $score, PDO::PARAM_INT); $stmt->execute(); //値を直接指定する $stmt->bindValue(1, 'takashi', PDO::PARAM_STR); $stmt->execute(); //result +----+---------+-------+ | id | name | score | +----+---------+-------+ | 12 | tanaka | 80 | | 13 | takashi | 80 | +----+---------+-------+ |
bindParam
bindParamはprepare文の中にある「?」と変数をバインドします(結びつけます)
以下の例だとbindValueの時と違い、変数の値を変えた時にもう一度バインドを宣言する必要がありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$stmt = $db->prepare('insert into users (name, score) values (?, ?)'); $name = 'sasayama'; $stmt->bindParam(1, $name, PDO::PARAM_STR); $score = 233; $stmt->bindParam(2, $score, PDO::PARAM_INT); $stmt->execute(); $name = 'takashi'; $stmt->execute(); //result +----+----------+-------+ | id | name | score | +----+----------+-------+ | 1 | sasayama | 233 | | 2 | takashi | 233 | +----+----------+-------+ |
まとめ
bindValue | bindParam | |
---|---|---|
変数 | ◯ | ◯ |
値を直接 | ◯ | ✖️ |
値とバインド | 毎回宣言が必要 | バインドは一度でいい |