2012-02-16 9 views
1

私のデータベースにアクセスするためにPDOを使用していますが、そこには2つのストアドプロシージャがあります。php PDOで複数のストアドプロシージャを呼び出す

$q = $db->prepare("CALL sp1(); CALL sp2()"); 
$q->execute; 
- 私は準備1で両方の手順を呼びたいので、私のようなものを試してみました

$q = $db->prepare("CALL sp1();"); 
$q->execute; 
//parsing results here... 

$q->closeCursor(); 

$q2 = $db->prepare("CALL sp2();"); 
$q2->execute; 
///parsing results here... 

: は今、私は、正常に動作している、手順を呼び出すために、このような何かを実行します

しかし、これは1つのストアドプロシージャだけを呼び出して実行し、両方を実行することはありません。 複数の手順を一度に使用して実行する方法はありますか?

+2

基本となるmysqlドライバでは、1回のクエリ呼び出しで複数のクエリを発行することはできません。これは、SQLインジェクションのいくつかの形式を防ぐための安全対策です。これはPDOを使用していても適用されます。 –

+3

本当に、一緒に実行する必要がある場合は、トランザクション自体の中で両方を呼び出す別のプロシージャを作成するのが最善の方法です。 –

答えて

2

1つのクエリで1つのstoredProcedureしか実行できません。

まだ1つのクエリのみを実行する必要がある場合は、別のストアドプロシージャを書き込むことをお勧めします。

関連する問題