1

パラメータに名前を付けても、「bindParam」を使用するには、ストアドプロシージャを呼び出すときに順序パラメータを含める必要があることを知っている必要があります。

次のいずれかにする方法はありますか?

  • ストアドプロシージャを呼び出し、ステートメントをビジリングしている間、パラメータの順序を知る必要はありません

  • または、ステートメントまたはPDOオブジェクトからストアドプロシージャに必要なパラメータの名前と順序を取得しますか?

4

1 に答える 1

0

パラメータを名前でバインドしないのはなぜですか?

$stmt = $pdo->prepare("SELECT * FROM mytable WHERE n = :num AND z = :zone");

$stmt->execute(array( "zone" => $zone, "num" => $num ));

ちなみに、execute() に配列を渡すだけでパラメーターを渡すことを好みます。bindParam() を使用する必要はなく、使用してもメリットはありません。パラメーターの型指定子がありますが、PDO コードを読むと、少なくとも PDO_MySQL ドライバーでは無視されます。


あなたのコメントについて: さて、私はあなたの質問を理解しました。

いいえ、MySQL ストアド プロシージャにクエリを実行して、予期されるパラメータや、プロシージャ内でそれらをどのように使用するかを知る方法はありません。少なくとも自分のコードを知っている必要があります。

于 2013-02-08T22:39:10.313 に答える