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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
PHP获取url的函数代码
Aug 02 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
PHP基于GD库的图像处理方法小结
Sep 27 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
毕业生找工作的求职信范文
2013/12/24 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
办理房产过户的委托书
2014/09/14 职场文书
网络研修随笔感言
2015/11/18 职场文书
工作简历的自我评价
2019/05/16 职场文书
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python