ホームページ >バックエンド開発 >PHPチュートリアル >bindParam と bindingValue: PHP の PDO の主な違いは何ですか?

bindParam と bindingValue: PHP の PDO の主な違いは何ですか?

DDD
DDDオリジナル
2024-12-18 16:04:24232ブラウズ

bindParam vs. bindValue: What's the Key Difference in PHP's 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。