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 相关文章推荐
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php 数组的一个悲剧?
May 11 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
php生成扇形比例图实例
Nov 06 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
浅析PHP7的多进程及实例源码
Apr 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
?繁体转换的class
2006/10/09 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python语言实现将图片转化为html页面
2017/12/06 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Python文件操作基础流程解析
2020/03/19 Python
浅析Python中字符串的intern机制
2020/10/03 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
一名女生的自荐信
2013/12/08 职场文书
年终总结会议主持词
2014/03/17 职场文书
代理协议书范本
2014/04/22 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Window server中安装Redis的超详细教程
2021/11/17 Redis