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

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

php調(diào)用mysql存儲過程會員登錄驗(yàn)證實(shí)例分析

2024-07-24 12:39:48
字體:
供稿:網(wǎng)友

本實(shí)例采用php調(diào)用msyql存儲過程實(shí)現(xiàn)用戶登錄,注冊,修改密碼等功能,前面部分講了Mysql如何創(chuàng)建存儲過程,如果想用Mysql存儲過程的朋友,值得參考,本文實(shí)例分析了php調(diào)用mysql存儲過程的方法,分享給大家供大家參考,具體分析如下:

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

  1. CREATE PROCEDURECREATE FUNCTION : 
  2.  
  3. CREATE PROCEDURE sp_name ([proc_parameter[,...]]) 
  4.  
  5.     [characteristic ...] routine_body 
  6.  
  7. CREATE FUNCTION sp_name ([func_parameter[,...]]) 
  8.  
  9.     RETURNS type 
  10.  
  11.     [characteristic ...] routine_body 
  12.  
  13.     proc_parameter: 
  14.  
  15.     [ IN | OUT | INOUT ] param_name type 
  16.  
  17.     func_parameter: 
  18.  
  19.     param_name type 
  20.  
  21. type: 
  22.  
  23.     Any valid MySQL data type 
  24.  
  25. characteristic: 
  26.  
  27.     LANGUAGE SQL 
  28.  
  29.   | [NOT] DETERMINISTIC 
  30.  
  31.   | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }  --Vevb.com 
  32.  
  33.   | SQL SECURITY { DEFINER | INVOKER } 
  34.  
  35.   | COMMENT 'string' 
  36.  
  37. routine_body: 
  38.  
  39.     Valid SQL procedure statement or statements 

當(dāng)我們看完以后,就可以開始寫一些簡單的存儲過程了,首先建立存儲過程, Create procedure(子程序)、Create function(函數(shù)),代碼如下:

  1. Create procedure sp_Name ([proc_parameter ]) 
  2. routine_body 

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

  1. Create functionsp_Name ([func_parameter ]) 
  2. Returns type 
  3. Routine_body 

Returns type 指定了返回的類型,這里給定的類型與返回值的類型要是一樣的,否則會報錯,下面是一個簡單的例子,代碼如下:

  1. mysql> delimiter // 
  2. mysql> create procedure g 
  3.     -> begin 
  4.     -> select version() i 
  5.     -> end 
  6.     -> // 
  7. Query OK, 0 rows affected 
  8.  
  9. mysql> call getversion(@a 
  10.     -> // 
  11. Query OK, 0 rows affected 
  12.  
  13. mysql> select @a; 
  14.     -> // 
  15. +---------------------+ 
  16. | @a                  | 
  17. +---------------------+ 
  18. | 5.0.45-community-nt | 
  19. +---------------------+ 
  20. 1 row in set (0.05 sec) 

一個獲取當(dāng)前mysql版本的存儲過程.那么php怎么與mysql的存儲過程相結(jié)合呢.以下來自百度知道,代碼如下:

  1. Drop table if exists user;   
  2.     Create table user(   
  3.         Id int unsigned not null auto_increment,   
  4.         Name varchar(20) not null,   
  5.         Pwd char(32) not null,   
  6.         Primary key(Id)   
  7. ); 

添加用戶的存儲過程,代碼如下:

  1. Delimiter //   
  2.     Create procedure insertuser(in username varchar(20),in userpwd varchar(32))   
  3.     Begin   
  4.         Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));   
  5.     End   
  6.     // 

驗(yàn)證用戶的存儲過程,代碼如下:

  1. Delimiter //   
  2.     Create procedure validateuser(in username varchar(20),out param1)   
  3.     Begin    
  4.         Select Pwd into param1 from welefen.user where Name=username;   
  5.     End   
  6.     // 

修改密碼的存儲過程,代碼如下:

  1. Delimiter //   
  2.     Create procedure modifyPwd(in username varchar(20),in userpwd varchar(32))   
  3.     Begin   
  4.         Update welefen.user set Pwd=md5(userpwd) where Name=username;   
  5.     End   
  6.     // 

刪除用戶的存儲過程,代碼如下:

  1. Delimiter //   
  2.     Create procedure deleteuser(in username varchar(20))  
  3. Begin   
  4.          delete from welefen.user where Name=username;   
  5.     End   
  6.     // 

在客戶端,我們給出如下的程序,代碼如下:

  1. <?php   
  2.      if (!mysql_connect("localhost","root","welefen")){    
  3.          echo "連接數(shù)據(jù)庫失敗";   
  4.     }   
  5.      if (!mysql_select_db("welefen")){   
  6.          echo "選擇數(shù)據(jù)庫表失敗<br>";   
  7.     }   
  8.        
  9.     $insert_user=array("welefen","welefen");//這里的welefen分別為用戶名、密碼   
  10.      if (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){   
  11.          echo "添加用戶$insert_user[0]成功<br>";   
  12.     }else {   
  13.          echo "添加用戶$insert_user[0]失敗<br>";   
  14.     }   
  15.        
  16.     $validate_user=array("welefen","welefen");//這里的welefen分別為用戶名、密碼   
  17.     mysql_query("call validateuser('$validate_user[0]',@a)");   
  18.     $Pwd=mysql_query("select @a");   
  19.     $result=mysql_fetch_array($Pwd);   
  20.      if ($result[0]==md5($validate_user[1])){   
  21.          echo "用戶$validate_user[0]驗(yàn)證正確<br>";   
  22.     }else {   
  23.          echo "用戶$validate_user[0]驗(yàn)證錯誤<br>";   
  24.     }   
  25.        
  26.     $modify_Pwd=array("welefen","weilefeng"); //welefen為用戶名weilefeng為新密碼   
  27.      if (mysql_query("call modifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){  
  28.          echo "用戶$modigy_Pwd[0]的密碼修改成功<br>";   
  29.     }else { 
  30.          echo "用戶$modigy_Pwd[0]的密碼修改失敗<br>";   
  31.     }   
  32.        
  33.     $delete_user=array("welefen");           //welefen為用戶名   
  34.      if (mysql_query("call deleteuser('$delete_user[0]')")){   
  35.          echo "用戶$delete_user[0]刪除成功<br>";   
  36.     }else {   
  37.          echo "用戶$delete_user[0]刪除失敗<br>";   
  38.     }   
  39. ?> 

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜阳市| 都匀市| 苏尼特左旗| 广水市| 丹阳市| 冷水江市| 曲松县| 德令哈市| 岱山县| 大连市| 融水| 平江县| 武川县| 三门县| 西峡县| 陆川县| 廉江市| 阿坝县| 临武县| 安庆市| 房山区| 合山市| 五常市| 莒南县| 涟水县| 额济纳旗| 夏津县| 谷城县| 北京市| 甘南县| 府谷县| 望都县| 微博| 湟中县| 从江县| 南平市| 北辰区| 海南省| 海宁市| 中卫市| 克山县|