php调用mysql存储过程实例分析


Posted in PHP onDecember 29, 2014

本文实例分析了php调用mysql存储过程的方法。分享给大家供大家参考。具体分析如下:

Mysql存储过程创建语法,代码如下:

CREATE PROCEDURE和CREATE FUNCTION :

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

当我们看完以后,就可以开始写一些简单的存储过程了,首先建立存储过程, Create procedure(子程序)、Create function(函数),代码如下:
Create procedure sp_Name ([proc_parameter ])

routine_body

这里的参数类型可以是 IN OUT INOUTT,意思和单词的意思是一样的,IN 表示是传进来的参数,OUT 是表示传出去的参数,INOUT 是表示传进来但最终传回的参数,代码如下:

Create functionsp_Name ([func_parameter ])

Returns type

Routine_body

Returns type 指定了返回的类型,这里给定的类型与返回值的类型要是一样的,否则会报错,下面是一个简单的例子,代码如下:

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)

一个获取当前mysql版本的存储过程.那么php怎么与mysql的存储过程相结合呢.以下来自百度知道,代码如下:
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)   

);

添加用户的存储过程,代码如下:
Delimiter //   

    Create procedure insertuser(in username varchar(20),in userpwd varchar(32))   

    Begin   

        Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));   

    End   

    //

验证用户的存储过程,代码如下:
Delimiter //   

    Create procedure validateuser(in username varchar(20),out param1)   

    Begin    

        Select Pwd into param1 from welefen.user where Name=username;   

    End   

    //

修改密码的存储过程,代码如下:
Delimiter //   

    Create procedure modifyPwd(in username varchar(20),in userpwd varchar(32))   

    Begin   

        Update welefen.user set Pwd=md5(userpwd) where Name=username;   

    End   

    //

删除用户的存储过程,代码如下:
Delimiter //   

    Create procedure deleteuser(in username varchar(20))  

Begin   

         delete from welefen.user where Name=username;   

    End   

    //

在客户端,我们给出如下的程序,代码如下:
<?php   

     if (!mysql_connect("localhost","root","welefen")){    

         echo "连接数据库失败";   

    }   

     if (!mysql_select_db("welefen")){   

         echo "选择数据库表失败<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]验证正确<br>";   

    }else {   

         echo "用户$validate_user[0]验证错误<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调用mysql的存储过程,其实这些简单的应用,就用不上存储过程了,实际的应用是比这个复杂的多,可以看出,建立了mysql的存储过程可以极大的减少了客服端的压力,但是增加了数据库服务的压力,各种利弊得实际去衡量.

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php 高效率写法 推荐
Feb 21 PHP
php实现rc4加密算法代码
Apr 25 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
php实现统计网站在线人数的方法
May 12 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 #PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 #PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 #PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 #PHP
php读取远程gzip压缩网页的方法
Dec 29 #PHP
php导入大量数据到mysql性能优化技巧
Dec 29 #PHP
推荐几个开源的微信开发项目
Dec 28 #PHP
You might like
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
浅谈Python中的bs4基础
2018/10/21 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python构造函数init实例方法解析
2020/01/19 Python
详解python metaclass(元类)
2020/08/13 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
教师实习自我鉴定
2013/12/14 职场文书
法学院方阵解说词
2014/01/29 职场文书
班级活动总结格式
2014/08/30 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书