ホームページ > バックエンド開発 > PHPチュートリアル > PHPで戻り値とクエリを含むmysqlストアドプロシージャを取得する方法

PHPで戻り値とクエリを含むmysqlストアドプロシージャを取得する方法

WBOY
リリース: 2016-06-13 13:17:33
オリジナル
889 人が閲覧しました

php で戻り値とクエリを持つ mysql ストアド プロシージャを取得する方法
ストアド プロシージャ
プロシージャ a(out b int)
begin
select 10;
set b=3;
end;

PHP
$tsql .= "call a(@b);";
$tsql .= "select @b;";
if($mysqli-> multi_query($tsql)) {
if($result = $mysqli->store_result()) {
while($row = $result->fetch_array()) {
array_push($data) ['table'], $row);
}
}
if($mysqli->more_results()){ // 結果セットがあるかどうかを判断します
if($mysqli- > ;next_result()) {
if($result = $mysqli->store_result()) {
if($row = $result->fetch_row()) {
for($i = 0, $count = count($row); $i $data['output'][$i] = $row[$i];
}
}
}
}
}
} else {
echo "ERROR:", $mysqli->errno, "---", $mysqli->error;
}
print_r($data['output']);

戻り値を指定せずに b を直接選択した場合は、戻り値を取得することができます。ストアド プロシージャ内でクエリを実行しなくても実行できます
両方を同時に使用すると戻り値を取得できません
これを解決する方法

------解決策--------------- --------

PHP コード
<?php
 2 定義('CLIENT_MULTI_RESULTS', 131072);
 3
 4 $link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) または die("接続できませんでした: ".mysql_error());
 5 mysql_select_db("vs") または die("データベースを選択できませんでした");
 6?>
 7
 8<?php
 9 $result = mysql_query("call get_news_from_class_id(2)") または die("クエリが失敗しました:" .mysql_error());
10 while($row = mysql_fetch_array($result, MYSQL_ASSOC))
11 {
12 $line = '<tr><td><a target = _blank href=''.$row["url"].''>'.$row["title"].'('. $row["page_time"].')'.'</a></td></tr>';
14 エコー $line;
15 printf("n");
16
17}
18 mysql_free_result($result);
19 ?>
20
21<?php 22 mysql_close($link);
23 ?><div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート