ホームページ  >  記事  >  バックエンド開発  >  PHP が MySQL ストアド プロシージャを呼び出す方法の詳細な説明_PHP チュートリアル

PHP が MySQL ストアド プロシージャを呼び出す方法の詳細な説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:06:14843ブラウズ

php と mysql は自然な組み合わせです。ここでは、php で mysql ストアド プロシージャを呼び出し、返された結果を実行する方法を紹介します。詳しく知りたい学生向けに、MySQL ストアド プロシージャを呼び出す一般的な方法をいくつかまとめました。それらを参照してください。

MySQL は 5.0 からストアド プロシージャを導入しました。私は以前アプリケーションを作成していたときはストアド プロシージャに触れたことはありませんでしたが、現在は主に内部システムで使用されているため、フロント デスクでストアド プロシージャを使用する必要がある場合があります。 MySQLストアドプロシージャを呼び出したり、PHPではあまり対応していないようなのですが、情報が少ないので試してみました


1.ストアド プロシージャを呼び出すメソッド。


a.ストアド プロシージャに IN/INOUT パラメータがある場合は、変数を宣言し、その変数を PHP 変数のペアとしてストアド プロシージャに入力します (必須ではありませんが、PHP 変数がない場合は、それを行う方法がありません)。動的入力を実行します) と Mysql 変数。


b.ストアド プロシージャに OUT 変数がある場合は、Mysql 変数を宣言します。 mysql 変数の宣言は特別であり、mysql サーバーはこの変数の存在を認識している必要があります。これは、mysql ステートメントを実行することを意味します。 「set @mysqlvar=$phpvar;

」と入力してください


c. mysql_query()/mysql_db_query() を使用して、mysql 変数宣言ステートメントを実行します。

コードは次のとおりです コードをコピー

mysql_query("set @mysqlvar【=$pbpvar】");


このように、mysql サーバーには変数 @mysqlar が存在します。 IN パラメータの場合、その値は phpar から渡すことができます。


d. ストアドプロシージャの場合。


1. callprocedure()ステートメントを実行します。


つまり、mysql_query("call プロシージャ([var1]...)");

2.戻り値がある場合はselect @arを実行し、実行結果を返します。

コードは次のとおりです コードをコピー
mysql_query("select @var)"


次の操作は、php が一般的な mysql ステートメントを実行するのと同じです。結果は、mydql_fetch_row() などの関数を通じて取得できます。


以下に、パラメーターなしでストアド プロシージャを呼び出す例をいくつかまとめました。

コードは次のとおりですコードをコピー

$conn = mysql_connect('localhost','root','root') or die ("データ接続エラー!!!");
mysql_select_db('test',$conn);
$sql = "
プロシージャ myproce() を作成します
始まります
INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');
終わり;
";
mysql_query($sql);//myproce ストアド プロシージャを作成します

$sql = "test.myproce() を呼び出す;";

mysql_query($sql);//myproce のストアド プロシージャを呼び出すと、新しいレコードがデータベースに追加されます。

タイプ 1: 入力および出力の型パラメーターを使用したメソッドの呼び出し

コードは次のとおりですコードをコピー

タイプ 2: 複数の出力型と複数の入力型パラメーターを使用したメソッドの呼び出し

$returnValue = '';

試してみてください{
mysql_query ( "set @Return" );
$spname = 'P__Test_GetInfo1';
mysql_query ( "call $spname(@Return, '{$userId}', '{$pwd}')" ) または die ( "[$spname]Query failed:" . mysql_error () );
$result_return = mysql_query ( "select @Return" );
$row_return = mysql_fetch_row ( $result_return );
$returnValue = $row_return [0];
} catch (例外 $e) {
エコー $e;
}
echo $returnValue; //ストアドプロシージャから出力された変数を出力します

コードは次のとおりです コードをコピー

$userId = 0;
試してください{
Mysql_query("set @Message");
Mysql_query("@Id を設定");
Mysql_query("call P__Test_Login(@Message, @Id, '{$userId}', '{$pwd}')", $conn) または die("Query failed:".mysql_error());
$result_mess = mysql_query("select @Message");
$result_uid = mysql_query("select @Id");
$row_mess = mysql_fetch_row($result_mess);
$row_uid = mysql_fetch_row($result_uid);
$Proc_Error = $row_mess[0];
$uId = $row_uid[0];
}
catch(例外 $e)
{
エコー $e;
}
echo 'proc return message:'$Proc_Error.'
' //ストアドプロシージャから出力された変数を出力します
echo 'ユーザーID:'.$uId //ユーザーIDを取得します

;

タイプ 3: 結果セットを返すメソッドの呼び出し

コードは次のとおりです コードをコピー

試してください{
$spname = 'P__Test_GetData';
$query = mysql_query ( "call $spname()", $conn ) or die ( "[$spname]Query failed:".mysql_error() );
while ( $row = mysql_fetch_array ( $query ) ) {
echo $row ['ProvinceID'].'::'.$row ['ProvinceName'] // 出力データセット
; }

} catch (例外 $e) {
エコー $e;
}

タイプ 4: 複数の結果セットを返すメソッドの呼び出し (現在は mysqli~~ を介してのみ可能)

コードは次のとおりです コードをコピー

//PHP
$rows = 配列 (); $db = 新しい mysqli($server,$user,$psd,$dbname); if (mysqli_connect_errno()){
$this->message('MySQL サーバーに接続できません'); }
$db->query("SET NAMES UTF8"); $db->query("SET @Message");
if($db->real_query("call P__Test_GetData2(@Message)")){
する{
If($result = $db->store_result()){
while ($row = $result->fetch_assoc()){
array_push($rows, $row);                                                                                         $result->close();                                                                          }while($db->next_result()); }
$db->close(); print_r($rows);
//手順

select * from T1 where ……
select * from T2 where ……




例 4: 送信パラメーターの inout ストアド プロシージャ

コードは次のとおりです コードをコピー
$sql = "
プロシージャ myproce4(inout sexflag int) を作成します
始まります
SELECT * FROM user WHERE sex = sexflag;
終わり
";
mysql_query($sql);//myproce4 ストアド プロシージャを作成します
$sql = "@sexflag = 1 を設定";
mysql_query($sql);//性別パラメータを 1 に設定します
$sql = "test.myproce4(@sexflag) を呼び出します;";
mysql_query($sql);//myproce4 のストアド プロシージャを呼び出し、cmd での効果を確認します


例 5: 変数を使用したスト​​アド プロシージャ

コードは次のとおりです コードをコピー
$sql = "
プロシージャ myproce5(in a int,in b int) を作成します
始まります
int のデフォルト 0 を宣言します;
セット s=a+b;
選択してください;
終わり
";
mysql_query($sql);//myproce5 ストアド プロシージャを作成します
$sql = "test.myproce5(4,6) を呼び出します;";
mysql_query($sql);//

myproce5 のストアド プロシージャを呼び出し、cmd での効果を確認します

例 6: case 構文

コードは次のとおりです コードをコピー
$sql = "
プロシージャ myproce6(スコア int) を作成します
始まります
事件スコア
60 の場合は、「パス」を選択します;
80 の場合は「和好」を選択してください;
100 の場合は、「優秀」を選択します;
それ以外の場合は「不明なスコア」を選択します;
エンドケース;
終わり
";
mysql_query($sql);//myproce6 ストアド プロシージャを作成します
$sql = "test.myproce6(100) を呼び出します;";
mysql_query($sql);//

myproce6 のストアド プロシージャを呼び出し、cmd での効果を確認します

例 7: ループステートメント

コードは次のとおりです コードをコピー
$sql = "
プロシージャ myproce7() を作成します
始まります
int のデフォルト 0 を宣言します;
j int のデフォルト 0 を宣言します;
その間私は10未満です
set j=j+i;
セット i=i+1;
そのうち終了します;
jを選択;
終わり
";
mysql_query($sql);//myproce7 ストアド プロシージャを作成します
$sql = "test.myproce7() を呼び出します;";
mysql_query($sql);//

myproce7 のストアド プロシージャを呼び出し、cmd での効果を確認します


例 8: 繰り返しステートメント

コードは次のとおりです コードをコピー
$sql = "
プロシージャ myproce8() を作成します
始まります
int のデフォルト 0 を宣言します;
j int のデフォルト 0 を宣言します;
リピート
set j=j+i;
セット i=i+1;
j>=10まで
繰り返しを終了します;
jを選択;
終わり
";
mysql_query($sql);//myproce8のストアドプロシージャを作成します
$sql = "test.myproce8() を呼び出す;";
mysql_query($sql);//

myproce8 のストアド プロシージャを呼び出し、cmd での効果を確認します

例 9: ループステートメント

コードは次のとおりです コードをコピー

$sql = "
プロシージャ myproce9() を作成します
始まります
int のデフォルト 0 を宣言します;
int のデフォルト 0 を宣言します;

ループ_ラベル:ループ
s=s+i を設定します;
セット i=i+1;
if i>=5 then
ループラベルを残します;
終了したら;
ループの終了;
選択してください;
終わり
";
mysql_query($sql);//myproce9 ストアド プロシージャを作成します
$sql = "test.myproce9() を呼び出す;";
mysql_query($sql);//

myproce9 のストアド プロシージャを呼び出し、cmd での効果を確認します

例 10: ストアド プロシージャを削除する

コードは次のとおりです コードをコピー

mysql_query("dropprocedure if selected myproce");//test のストアド プロシージャを削除します

例 10: ストアド プロシージャ内のカーソル

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630700.html技術記事 PHP と MySQL は自然に一致します。PHP で MySQL ストアド プロシージャを呼び出して、返された結果を実行する方法を紹介します。以下に、PHP で MySQL ストアド プロシージャを呼び出す一般的な方法をいくつかまとめました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。