ホームページ  >  記事  >  バックエンド開発  >  SQL ステートメントを再利用する方法についてアイデアを教えてください。

SQL ステートメントを再利用する方法についてアイデアを教えてください。

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

現在、さまざまな場所に適用する必要がある非常に長い SQL ステートメントがいくつかあるため、それらをストアド プロシージャに書き込み、共通に使用し、デバッグを容易にしたいと考えています。
ストアド プロシージャは記述できましたが、PHP を使用してそれを呼び出すと、ストアド プロシージャを呼び出すたびに新しいデータ接続を作成する必要があり、面倒でリソースの消費が多すぎます。 SQL ステートメントを再利用するより良い方法、または接続を閉じずにストアド プロシージャを呼び出す PHP ページを処理する方法はありますか。ありがとう!

現在の実装方法は次のとおりです。

$pdobakpro1 = new PDO('mysql:host=localhost;dbname=test','root','123456');
$pdobakpro2 = new PDO('mysql:host) =localhost; dbname=test','root','123456');

$sql1 = "call pro_1()";//ストアド プロシージャとデータベース接続

$stmt1 = $pdobakpro1->query( $sql1);

var_dump($stmt1);

$sql2 = "call pro_2()";// 2 番目のストアド プロシージャを呼び出すには、新しいデータベース接続を作成する必要があります

$stmt2 = $pdobakpro2-> ;query($sql2) ;

var_dump($stmt2);

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

$stmt1 = $pdobakpro1->query($sql1); $stmt1 の内容

そして
$pdobakpro1 = new PDO('mysql:host=localhost;dbname=test','root','123456');

$pdobakpro2 = new PDO('mysql:host=localhost; dbname=test','root','123456');

および
$pdobakpro1 = 新しい PDO('mysql:host=localhost;dbname=test','root','123456');
$pdobakpro2 = クローン $ pdobakpro1;
は同じです
「リソースを過剰に消費する」ということはありません

そして
$pdobakpro1 = new PDO('mysql:host=localhost;dbname=test','root','123456');

$pdobakpro2 = 新しい PDO('mysql :host=localhost;dbname=test','root','123456');

および
$pdobakpro1 = 新しい PDO('mysql:...

ありがとう、わかりました、バージョンさんの意味が分かりました。
誰もが PHP を使用してこのようにストアド プロシージャを呼び出しているかどうかを知りたいだけです。1 つのストアド プロシージャがデータベースに一度接続されます。あるいは、私が間違ったことをした。

ストアド プロシージャは複数の結果セットを返すことができます
私が理解できないのは、なぜ 1 つを処理して次のストアド プロシージャを実行するのではなく、無関係なストアド プロシージャを一緒に実行する必要があるのか​​ということです

2 つのストアド プロシージャの結果が同じでない場合、それなら一度に実行してみませんか

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