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 相关文章推荐
浅析51个PHP处理字符串的函数
Aug 02 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
PHP微信支付开发实例
Jun 22 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP队列用法实例
2014/11/05 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
ant design 日期格式化的实现
2020/10/27 Javascript
图文详解WinPE下安装Python
2016/05/17 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python Django 命名空间模式的实现
2019/08/09 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Python实现简单猜数字游戏
2021/02/03 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
linux下进程间通信的方式
2013/01/23 面试题
党员个人剖析材料(四风问题)
2014/10/07 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
维稳工作承诺书
2015/01/20 职场文书
节约用电倡议书
2015/04/28 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
python游戏开发Pygame框架
2022/04/22 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python