ホームページ  >  記事  >  バックエンド開発  >  PHP が複数のストアド プロシージャを呼び出したときに接続が閉じないようにする方法。

PHP が複数のストアド プロシージャを呼び出したときに接続が閉じないようにする方法。

WBOY
WBOYオリジナル
2016-06-23 14:05:22957ブラウズ

PHP ファイルでは複数のストアド プロシージャが使用され、各ストアド プロシージャは個別のデータ接続を確立する必要があります。
$pdobakpro = 新しい PDO('mysql:host=localhost;dbname=test','root','123456');
$sql1 = "call pro_1()"; $stmt1 = $pdobakpro->query ( $sql1);
var_dump($stmt1);
$sql2 = "call pro_2()";
var_dump($stmt2);データベース内のストアド プロシージャに PDO 接続を使用しますか?ありがとう。




ディスカッションへの返信 (解決策)

各ストアド プロシージャで個別のデータ接続を作成する必要があるのはなぜですか? $stmt1 と $stmt2 の両方がリソースを返しませんか?

各ストアド プロシージャが個別のデータ接続を確立する必要があるのはなぜですか?

$stmt1 と $stmt2 の両方がリソースを返しませんか?


上記のコードでは、$stmt2 はリソースを返すことができません

リソースを取得するには、別の接続を作成する必要があります

$pdobakpro2 = new PDO('mysql:host=localhost;dbname=test','root','123456') ;
$sql2 = "call pro_2()";
$stmt2 = $pdobakpro2->query($sql2);
var_dump($stmt2);

他の友人もこの問題に遭遇しました。彼のことを理解できませんでした 解決策
http://www.cnblogs.com/fightLonely/archive/2011/08/12/2136556.html

$stmt1 を取得した後で読み上げてみませんか?

$stmt1 を入手したら読み上げてみてはいかがでしょうか?

データベース接続で実行できるストアド プロシージャは 1 つだけです。つまり、このページで N 個のストアド プロシージャを呼び出す必要がある場合、新しい PDO が N 回必要になります

ここで、適用する必要がある非常に長い SQL ステートメントがいくつかあります。異なる場所にあるため、共通に使用し、デバッグを容易にするために、ストアド プロシージャとして作成したいと思います。


データベース接続で 1 つのストアド プロシージャのみを実行できるというわけではありません
が、前のラウンドのクエリ結果が読み取られるまで次のクエリ ラウンドを実行できないということです
このような制約がある理由は非常に単純です。クエリ結果セット

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