ホームページ > バックエンド開発 > PHPチュートリアル > phpプログラムでmysqlストアドプロシージャを呼び出す例_PHPチュートリアル

phpプログラムでmysqlストアドプロシージャを呼び出す例_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:46:59
オリジナル
842 人が閲覧しました

phpとmysqlは自然な組み合わせです。 それでは、phpプログラム内でmysqlで記述されたストアドプロシージャを呼び出す方法を紹介します。具体的な実装方法を見てみましょう。

Mysqlストアドプロシージャ作成構文

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

プロシージャの作成と関数の作成

プロシージャの作成 sp_name ([proc_parameter[,...]])

[特徴 ...] ルーチンボディ

関数 sp_name ([func_parameter[,...]]) を作成します

返品タイプ

[特徴 ...] ルーチンボディ

proc_parameter:

[ IN | INOUT ] パラメータ名タイプ

func_parameter:

param_name タイプ

タイプ:

任意の有効な MySQL データ型

特徴:

言語SQL

| [非] 決定論的

| { SQL を含みません | SQL データを変更します |

| SQL セキュリティ { 定義者 }

| コメント「文字列」

ルーチン本体:

有効な SQL プロシージャ ステートメント

読み終わったら、簡単なストアド プロシージャの作成を開始できます。

まずストアドプロシージャを作成、プロシージャ(サブルーチン)を作成、関数(ファンクション)を作成

コードは次のとおりですコードをコピー
プロシージャ sp_Name ([proc_parameter]) を作成します

ルーチンボディ

ここでのパラメータのタイプは IN OUT INOUTT にすることができます。これは単語の意味と同じです。IN は渡されるパラメータを意味し、OUT は渡されるパラメータを意味し、INOUT は渡されるが最終的に返されるパラメータを意味します。

コードは次のとおりですコードをコピー
functionsp_Name ([func_parameter ]) を作成します

戻り値の型
ルーティンボディ

戻り値の型は、戻り値の型と同じである必要があります。そうでない場合は、エラーが報告されます。

簡単な例を次に示します:

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

現在の mysql バージョンを取得するためのストアド プロシージャ。それでは、php と mysql ストアド プロシージャを組み合わせる方法です。

//以下は百度からのものです:

mysql> 区切り文字 //

mysql> プロシージャ g を作成します
-> 始めます
-> バージョンを選択() i
->終了
-> //
クエリは OK、影響を受ける行は 0 つあります

mysql> getversion(@a

) を呼び出します。 -> //
クエリは OK、影響を受ける行は 0 つあります

mysql>@a;

を選択します -> //
+---------------------+
| @a +---------------------+
| 5.0.45-コミュニティ-nt |
+---------------------+
セット内の 1 行 (0.05 秒)

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

ユーザーが存在する場合はテーブルを削除します
テーブルユーザーの作成(
ID int unsigned not null auto_increment、
名前 varchar(20) が null ではありません、
Pwd char(32) が null ではありません、
主キー(ID) );

ユーザーのストアド プロシージャを追加します:

コードは次のとおりですコードをコピー
区切り文字 //

プロシージャを作成します 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)。 終了
//

コードは次のとおりです区切り文字 // ユーザーのストアド プロシージャを削除します:
コードをコピー
プロシージャmodifyPwd(in username varchar(20),in userpwd varchar(32))を作成します

始めましょう
welefen.user set Pwd=md5(userpwd) を更新します (Name=username)。 終了
//


コードは次のとおりですコードをコピー区切り文字 // プロシージャ deleteuser(ユーザー名 varchar(20) 内) を作成します 始めましょうtru​​e
Welefen.user から削除(Name=ユーザー名) 終了
//


クライアント側では、次のプログラムを提供します:

http://www.bkjia.com/PHPjc/632923.html
コードは次のとおりです コードをコピー


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] のパスワードは正常に変更されました
"; }その他{
ユーザー $modigy のパスワード変更_Pwd[0] が失敗しました
";
}

$delete_user=array("welefen"); //welefen はユーザー名です
If (mysql_query("call deleteuser('$delete_user[0]')")){
echo "ユーザー $delete_user[0] は正常に削除されました
"; }その他{
echo "ユーザー $delete_user[0]
を削除できませんでした
; }
?>






これで終わりです。実際、これらの単純なアプリケーションは、mysql のストアド プロシージャを作成することで大幅に削減できることがわかります。顧客サービス側のプレッシャーですが、データベース サービスのプレッシャーも高まります。さまざまなメリットとデメリットを現実的に比較検討する必要があります。

www.bkjia.com

http://www.bkjia.com/PHPjc/632923.html

技術記事

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