ホームページ > バックエンド開発 > PHPチュートリアル > PHP PDO はストアド プロシージャを呼び出し、複数のコレクションと出力パラメータを取得する方法を教えてください。

PHP PDO はストアド プロシージャを呼び出し、複数のコレクションと出力パラメータを取得する方法を教えてください。

WBOY
リリース: 2016-06-23 14:39:25
オリジナル
1184 人が閲覧しました

select * from table;
select * from table1;

上記のように、ストアド プロシージャは 2 つの結果セットと 1 つの出力パラメータを PHP で取得する方法を教えてください。


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

1つずつ読む

PDOStatement::nextRowsetメソッドの説明を参照

1つずつ読む

PDOStatement::nextRowsetメソッドの説明を参照
コレクションが複数しかない場合はわかるのですが、次のような出力パラメータがあります

$stmt = $db->prepare("CALL pro_test(:name,@sp_result);");				$stmt->execute (array(':name'=>$name));		$outputArray = $db->query("select @sp_result")->fetch(PDO::FETCH_ASSOC);				print_r($outputArray["@sp_result"]);
ログイン後にコピー


ストアド プロシージャはセットを返し、出力パラメータを一度クエリする必要がありますが、このステップでエラーが発生します
$outputArray = $db->query("select @sp_result ")->fetch(PDO:: FETCH_ASSOC);
エラー: SOAP-ENV:Server, string: Call to a member function fetch() on a non-object

ストアド プロシージャが結果を返したということだと思います以前、別のチェック時にエラーが発生しました。どうすれば解決できますか?

これはマニュアル
$sql = 'CALL multiple_rowsets()';$stmt = $conn->query($sql);$i = 1;do {    $rowset = $stmt->fetchAll(PDO_FETCH_NUM);    if ($rowset) { //想想这里为什么要先判断一下        printResultSet($rowset, $i);    }    $i++;} while ($stmt->nextRowset());
ログイン後にコピー
ログイン後にコピー
の例です

これはマニュアル
$sql = 'CALL multiple_rowsets()';$stmt = $conn->query($sql);$i = 1;do {    $rowset = $stmt->fetchAll(PDO_FETCH_NUM);    if ($rowset) { //想想这里为什么要先判断一下        printResultSet($rowset, $i);    }    $i++;} while ($stmt->nextRowset());
ログイン後にコピー
ログイン後にコピー
の例です

私の意味を誤解しているかもしれませんが、ストアド プロシージャの結果セットとストアド プロシージャによって返されるパラメータが必要です。解決したので公式サイトへ

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート