国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php調(diào)用mysql存儲(chǔ)過(guò)程實(shí)例分析

2024-05-04 23:29:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了php調(diào)用mysql存儲(chǔ)過(guò)程,綜合各種常見(jiàn)實(shí)例分析了php調(diào)用mysql存儲(chǔ)過(guò)程的各種常見(jiàn)操作與使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
 
 

本文實(shí)例分析了php調(diào)用mysql存儲(chǔ)過(guò)程的方法。分享給大家供大家參考。具體分析如下:

Mysql存儲(chǔ)過(guò)程創(chuàng)建語(yǔ)法,代碼如下:

CREATE PROCEDURE和CREATE FUNCTION :

復(fù)制代碼代碼如下:
CREATE PROCEDURE sp_name ([proc_parameter[,...]]) 
 
    [characteristic ...] routine_body 
 
CREATE FUNCTION sp_name ([func_parameter[,...]]) 
 
    RETURNS type 
 
    [characteristic ...] routine_body 
 
    proc_parameter: 
 
    [ IN | OUT | INOUT ] param_name type 
 
    func_parameter: 
 
    param_name type 
 
type: 
 
    Any valid MySQL data type 
 
characteristic: 
 
    LANGUAGE SQL 
 
  | [NOT] DETERMINISTIC 
 
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
 
  | SQL SECURITY { DEFINER | INVOKER } 
 
  | COMMENT 'string' 
 
routine_body: 
 
    Valid SQL procedure statement or statements

當(dāng)我們看完以后,就可以開(kāi)始寫(xiě)一些簡(jiǎn)單的存儲(chǔ)過(guò)程了,首先建立存儲(chǔ)過(guò)程, Create procedure(子程序)、Create function(函數(shù)),代碼如下:
復(fù)制代碼代碼如下:
Create procedure sp_Name ([proc_parameter ])
routine_body

 

這里的參數(shù)類型可以是 IN OUT INOUTT,意思和單詞的意思是一樣的,IN 表示是傳進(jìn)來(lái)的參數(shù),OUT 是表示傳出去的參數(shù),INOUT 是表示傳進(jìn)來(lái)但最終傳回的參數(shù),代碼如下:

復(fù)制代碼代碼如下:
Create functionsp_Name ([func_parameter ])
Returns type
Routine_body

 

Returns type 指定了返回的類型,這里給定的類型與返回值的類型要是一樣的,否則會(huì)報(bào)錯(cuò),下面是一個(gè)簡(jiǎn)單的例子,代碼如下:

復(fù)制代碼代碼如下:
mysql> delimiter // 
mysql> create procedure g 
    -> begin 
    -> select version() i 
    -> end 
    -> // 
Query OK, 0 rows affected 
 
mysql> call getversion(@a 
    -> // 
Query OK, 0 rows affected 
 
mysql> select @a; 
    -> // 
+---------------------+ 
| @a                  | 
+---------------------+ 
| 5.0.45-community-nt | 
+---------------------+ 
1 row in set (0.05 sec)

一個(gè)獲取當(dāng)前mysql版本的存儲(chǔ)過(guò)程.那么php怎么與mysql的存儲(chǔ)過(guò)程相結(jié)合呢.以下來(lái)自百度知道,代碼如下:
復(fù)制代碼代碼如下:
Drop table if exists user;   
    Create table user(   
        Id int unsigned not null auto_increment,   
        Name varchar(20) not null,   
        Pwd char(32) not null,   
        Primary key(Id)   
);

添加用戶的存儲(chǔ)過(guò)程,代碼如下:
復(fù)制代碼代碼如下:
Delimiter //   
    Create procedure insertuser(in username varchar(20),in userpwd varchar(32))   
    Begin   
        Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));   
    End   
    //

驗(yàn)證用戶的存儲(chǔ)過(guò)程,代碼如下:
復(fù)制代碼代碼如下:
Delimiter //   
    Create procedure validateuser(in username varchar(20),out param1)   
    Begin    
        Select Pwd into param1 from welefen.user where Name=username;   
    End   
    //

修改密碼的存儲(chǔ)過(guò)程,代碼如下:
復(fù)制代碼代碼如下:
Delimiter //   
    Create procedure modifyPwd(in username varchar(20),in userpwd varchar(32))   
    Begin   
        Update welefen.user set Pwd=md5(userpwd) where Name=username;   
    End   
    //

刪除用戶的存儲(chǔ)過(guò)程,代碼如下:
復(fù)制代碼代碼如下:
Delimiter //   
    Create procedure deleteuser(in username varchar(20))  
Begin   
         delete from welefen.user where Name=username;   
    End   
    //

在客戶端,我們給出如下的程序,代碼如下:
復(fù)制代碼代碼如下:
<?php   
     if (!mysql_connect("localhost","root","welefen")){    
         echo "連接數(shù)據(jù)庫(kù)失敗";   
    }   
     if (!mysql_select_db("welefen")){   
         echo "選擇數(shù)據(jù)庫(kù)表失敗<br>";   
    }   
       
    $insert_user=array("welefen","welefen");//這里的welefen分別為用戶名、密碼   
     if (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){   
         echo "添加用戶$insert_user[0]成功<br>";   
    }else {   
         echo "添加用戶$insert_user[0]失敗<br>";   
    }   
       
    $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]驗(yàn)證正確<br>";   
    }else {   
         echo "用戶$validate_user[0]驗(yàn)證錯(cuò)誤<br>";   
    }   
       
    $modify_Pwd=array("welefen","weilefeng"); //welefen為用戶名weilefeng為新密碼   
     if (mysql_query("call modifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){  
         echo "用戶$modigy_Pwd[0]的密碼修改成功<br>";   
    }else {
         echo "用戶$modigy_Pwd[0]的密碼修改失敗<br>";   
    }   
       
    $delete_user=array("welefen");           //welefen為用戶名   
     if (mysql_query("call deleteuser('$delete_user[0]')")){   
         echo "用戶$delete_user[0]刪除成功<br>";   
    }else {   
         echo "用戶$delete_user[0]刪除失敗<br>";   
    }   
?>

這樣就完成了,php調(diào)用mysql的存儲(chǔ)過(guò)程,其實(shí)這些簡(jiǎn)單的應(yīng)用,就用不上存儲(chǔ)過(guò)程了,實(shí)際的應(yīng)用是比這個(gè)復(fù)雜的多,可以看出,建立了mysql的存儲(chǔ)過(guò)程可以極大的減少了客服端的壓力,但是增加了數(shù)據(jù)庫(kù)服務(wù)的壓力,各種利弊得實(shí)際去衡量.

 

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 保德县| 乳山市| 阿荣旗| 自贡市| 沽源县| 东平县| 乌鲁木齐县| 阿克| 永昌县| 秀山| 根河市| 莱州市| 雷波县| 澄江县| 遂溪县| 临湘市| 资兴市| 松原市| 探索| 乐山市| 土默特右旗| 栾川县| 荆门市| 凤台县| 托克逊县| 章丘市| 阳江市| 宕昌县| 中山市| 盐亭县| 商丘市| 聂荣县| 甘德县| 阿克| 庆安县| 屏南县| 临泉县| 措美县| 临猗县| 嘉善县| 长宁县|