質問

役に立ちましたか?

解決

答えは bindParam のドキュメントであります:

  

のPDOStatement異なり:: bindValue()、変数)を基準として結合されており、唯一のPDOStatementは::(実行時に評価されるであろうと呼ばれています。

executeする

  

パラメータマーカーにPHP変数をバインドする::のPDOStatementを呼び出しbindParam():結合した変数は、入力として、その値を渡し、出力値を受信し、もしあれば、それらの関連するパラメータマーカーの

例:

$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'

他のヒント

ここにもいるようになってきてい:

  • bindParam, できるだけパス変数;な価値
  • bindValue, とすることができます両方の価値観の違いや変数)
  • bindParam でのみ動作変数できるようにするために、パラメータとして与えられた入力/出力し、"参照" (価値が変わってきているんですけど"参照"をサポートに対するコミットメント :有用であるドライバー(引用のマニュアル):

支援の呼び出しの保存 手順に戻すことでデータを出力 パラメータの一部としても 入力/出力パラメータの両方を送信 データ更新されます。

一部のDBエンジン保存の手順で使用できるパラメータが両方の入力値で与えているからPHPの手順)と出力(返す値を格納し,PHP);bindそのパラメータを使ってbindParamなbindValue.

プリペアドステートメントおよびストアドプロシージャ

1時間結合で複数の行を挿入するbindParamを使用します:

<?php

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();

最も共通の目的を使用してみてください bindValue.

bindParam 二つのトリッキー又は予期せぬ挙動:

  • bindParam(':foo', 4, PDO::PARAM_INT) な作業が必要になるので通過可変(参照)。
  • bindParam(':foo', $value, PDO::PARAM_INT) 変化 $value を実行後にその文字列 execute().そのためにはもちろん、生き生きと微妙なバグることが難しい場合があります。することができました。

ソース: http://php.net/manual/en/pdostatement.bindparam.php#94711

このような方法が存在する場合、

あなたは、もはや苦労する必要はありません。

$stmt = $pdo->prepare("SELECT * FROM someTable WHERE col = :val");
$stmt->execute([":val" => $bind]); 

最も簡単な方法をこの視点による記憶行動のサポートに対するコミットメント:

  • bindParam: 参考
  • bindValue: 変数
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top