パラメータに名前を付けても、「bindParam」を使用するには、ストアドプロシージャを呼び出すときに順序パラメータを含める必要があることを知っている必要があります。
次のいずれかにする方法はありますか?
ストアドプロシージャを呼び出し、ステートメントをビジリングしている間、パラメータの順序を知る必要はありません
または、ステートメントまたはPDOオブジェクトからストアドプロシージャに必要なパラメータの名前と順序を取得しますか?
パラメータに名前を付けても、「bindParam」を使用するには、ストアドプロシージャを呼び出すときに順序パラメータを含める必要があることを知っている必要があります。
次のいずれかにする方法はありますか?
ストアドプロシージャを呼び出し、ステートメントをビジリングしている間、パラメータの順序を知る必要はありません
または、ステートメントまたはPDOオブジェクトからストアドプロシージャに必要なパラメータの名前と順序を取得しますか?
パラメータを名前でバインドしないのはなぜですか?
$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 ストアド プロシージャにクエリを実行して、予期されるパラメータや、プロシージャ内でそれらをどのように使用するかを知る方法はありません。少なくとも自分のコードを知っている必要があります。