phpはmysqlストアドプロシージャインスタンス分析、mysqlインスタンス分析を呼び出します
この記事では、PHP で mysql ストアド プロシージャを呼び出す方法を分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
Mysql ストアド プロシージャ作成構文、コードは次のとおりです:
プロシージャの作成と関数の作成:
コードをコピーします コードは次のとおりです:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
【特徴…】ルーチンボディ
CREATE FUNCTION sp_name ([func_parameter[,...]])
返品タイプ
【特徴…】ルーチンボディ
proc_parameter:
[ IN | INOUT ] パラメータ名タイプ
関数パラメータ:
param_name タイプ
タイプ:
任意の有効な MySQL データ型
特徴:
言語 SQL
| [そうではない] 決定的
| { SQL を含みません SQL データを読み取ります |
| SQL セキュリティ { 定義者 }
| コメント「文字列」
ルーチン本体:
有効な SQL プロシージャ ステートメント
読み終わったら、いくつかの簡単なストアド プロシージャの作成を開始できます。まず、ストアド プロシージャ、プロシージャの作成 (サブプログラム) と関数の作成 (関数) を作成します。コードは次のとおりです。
コードをコピーします コードは次のとおりです:
プロシージャ sp_Name ([proc_parameter]) を作成します
ルーティンボディ
ここでのパラメータのタイプは IN OUT INOUTT にすることができます。これは単語の意味と同じです。IN は渡されるパラメータを意味し、INOUT は渡されるが最終的に返されるパラメータを意味します。以下の通り:
コードをコピーします コードは次のとおりです:
functionsp_Name ([func_parameter ])を作成します
戻り値の型
ルーティンボディ
戻り値の型は、戻り値の型と同じである必要があります。そうでない場合は、エラーが報告されます。コードは次のとおりです。
コードをコピーします コードは次のとおりです:mysql> 区切り文字 //
mysql> プロシージャ g を作成します
-> 始めます
-> バージョンを選択() i
->終了
-> //
クエリは OK、影響を受ける行は 0 つあります
mysql> getversion(@a
を呼び出します)
-> //
クエリは OK、影響を受ける行は 0 つあります
mysql> @a を選択します。
-> //
+---------------------+
| @a
+---------------------+
| 5.0.45-コミュニティー
+---------------------+
1 行 (0.05 秒)
現在の mysql バージョンを取得するためのストアド プロシージャ。では、php はどのようにして mysql ストアド プロシージャと結合するのでしょうか。以下は Baidu からのもので、コードは次のとおりです。
コードをコピーします
コードは次のとおりです:
ユーザーが存在する場合はテーブルを削除します
テーブルユーザーの作成(
ID int unsigned not null auto_increment、
名前 varchar(20) が null ではありません、
Pwd char(32) が null ではありません、
主キー(Id)
);
ユーザーのストアド プロシージャを追加します。コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
Delimiter //
プロシージャを作成します insertuser(in username varchar(20),in userpwd varchar(32))
始めましょう
welefen.user(Name,Pwd) の値 (username,md5(userpwd)) に挿入します
終了
//
ユーザーのストアド プロシージャを確認します。コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
区切り文字 //
プロシージャ validateuser(in username varchar(20),out param1) を作成します
始めましょう
welefen.user から param1 に Pwd を選択します (Name=username)。
終了
//
パスワードを変更するためのストアドプロシージャは次のとおりです:
コードをコピーします コードは次のとおりです:
Delimiter //
プロシージャmodifyPwd(in username varchar(20),in userpwd varchar(32))を作成します
始めましょう
welefen.user set Pwd=md5(userpwd) を更新します (Name=username)。
終了
//
ユーザーのストアド プロシージャを削除します。コードは次のとおりです:
コードをコピーします コードは次のとおりです:Delimiter //
プロシージャ deleteuser(ユーザー名 varchar(20) 内) を作成します
始めましょう
Welefen.user から削除(Name=username;
)
終了
//
クライアント側では、次のプログラムを提供します。コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
If (!mysql_connect("localhost","root","welefen")){
echo 「データベースへの接続に失敗しました」;
}
If (!mysql_select_db("welefen")){
echo "データベース テーブルの選択に失敗しました
";
}
$insert_user=array("welefen","welefen");//Welefen はそれぞれユーザー名とパスワードです
If (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){
echo "ユーザー $insert_user[0] を追加しました
";
}その他{
echo "ユーザー $insert_user[0]
を追加できませんでした";
}
$validate_user=array("welefen","welefen");//ここでの Welefen はそれぞれユーザー名とパスワードです
Mysql_query("call validateuser('$validate_user[0]',@a)");
$Pwd=mysql_query("select @a");
$result=mysql_fetch_array($Pwd);
If ($result[0]==md5($validate_user[1])){
echo "ユーザー $validate_user[0] は正しく検証されました
";
}その他{
echo "ユーザー $validate_user[0]
の検証エラー";
}
$modify_Pwd=array("welefen","weilefeng"); //welefen はユーザー名、weilefeng は新しいパスワードです
If (mysql_query("callmodifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){
echo "ユーザー $modigy_Pwd[0] のパスワードは正常に変更されました
";
}その他{
Echo "User $ model_pwd [0] パスワードの変更に失敗しました & lt; br & gt;";
}
$delete_user=array("welefen"); //welefen はユーザー名です
If (mysql_query("call deleteuser('$delete_user[0]')")){
echo "ユーザー $delete_user[0] は正常に削除されました
";
}その他{
echo "ユーザー $delete_user[0]
の削除に失敗しました。";
}
?>
これにより、PHP は MySQL のストアド プロシージャを呼び出します。実際には、これらの単純なアプリケーションは、MySQL のストアド プロシージャを作成することで大幅に削減できることがわかります。顧客サービス側のプレッシャーですが、データベース サービスのプレッシャーも増大します。さまざまなメリットとデメリットを現実的に比較検討する必要があります。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/934931.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/934931.html技術記事 PHP が mysql ストアド プロシージャを呼び出す例の分析、mysql ストアド プロシージャを呼び出す例 この記事では、PHP が mysql ストアド プロシージャを呼び出す方法を分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: MySQL ストレージ...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。