ホームページ >バックエンド開発 >PHPチュートリアル >bindParam と bindingValue: PHP の PDO の主な違いは何ですか?
bindParam と bindingValue の違いを理解する
質問:
根本的な違いは何ですかPDOStatement::bindParam() とPDOStatement::bindValue()?
答え:
PDOStatement::bindParam マニュアル エントリによると、主な違いは 2 つのメソッドの参照動作にあります。 bindParam は変数を参照としてバインドし、bindValue は変数の値をバインドします。この参照動作は、PDOStatement::execute() の実行中に有効になります。
bindParam 例:
次のコードを考えてみましょう:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // bind the variable using bindParam $sex = 'female'; $s->execute(); // execute with WHERE sex = 'female'
ここでは、bindParam が $sex を参照としてバインドしています。ステートメントが実行されると、$sex の現在の値が参照されますが、これは「女性」に変更されています。したがって、クエリは「女子」学生の結果を取得します。
bindValue 例:
次に、bindValue:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // bind the variable's value using bindValue $sex = 'female'; $s->execute(); // execute with WHERE sex = 'male'この場合、bindValue はバインド時の $sex の値 ('male') をバインドします。したがって、後で $sex の値が変更されたとしても、クエリは常に「男子」学生の結果を取得します。これは、bindValue の非参照動作を示しています。
以上がbindParam と bindingValue: PHP の PDO の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。