1. ホーム
  2. php

[解決済み] bindParamとbindValueの違いは何ですか?

2022-03-24 05:16:37

質問

とはどのような違いがあるのでしょうか? PDOStatement::bindParam() PDOStatement::bindValue() ?

解決方法は?

のドキュメントに答えがあります。 bindParam :

PDOStatement::bindValue() とは異なり、変数は参照として束縛され、 PDOStatement::execute() が呼ばれた時点でのみ評価されます。

そして execute

PDOStatement::bindParam() をコールして、PHP 変数をパラメータマーカにバインドします。 バインドした変数はその値を入力として渡し、関連するパラメータマーカの出力値 (もしあれば) を受け取ります。

$value = 'foo';
$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');
$s->bindParam(':baz', $value); // use bindParam to bind the variable
$value = 'foobarbaz';
$s->execute(); // executed with WHERE baz = 'foobarbaz'

または

$value = 'foo';
$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');
$s->bindValue(':baz', $value); // use bindValue to bind the variable's value
$value = 'foobarbaz';
$s->execute(); // executed with WHERE baz = 'foo'