PHP调用MySQL存储过程并返回值的方法


Posted in PHP onDecember 26, 2014

本文实例讲述了php中调用执行mysql存储过程然后返回由存储过程返回的值,分享给大家供大家参考。具体分析如下:

调用存储过程的方法.

a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量,也可以不必,只是没有php变量时,没有办法进行动态输入,一个Mysql变量.

b。如果存储过程有OUT变量,声明一个Mysql变量,mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句,入set @mysqlvar=$phpvar ;

c。使用mysql_query()/mysql_db_query()执行mysql 变量声明语句。

代码如下:

mysql_query("set @mysqlvar=$pbpvar");

这样,在mysql服务器里面就有一个变量,@mysqlar,如果时IN参数,那么其值可以有phpar传入.

例,利用mysqli函数实例,我们先可在mysql创建一个存储过程,代码如下:

mysql> delimiter // 

mysql> CREATE PROCEDURE employee_list (OUT param1 INT) 

    -> BEGIN 

    ->   SELECT COUNT(*) INTO param1 FROM t; 

    -> END 

    -> // 

Query OK, 0 rows affected (0.00 sec)

然后在php中如下写,代码如下:
<h1>Employee listing</h1> 

<form method="post" > 

<p>Enter Department ID: 

<input type="text" name="dept_id" size="4"> 

<input type="submit" name="submit" value="submit"><p> 

</form> 

<?php 

$hostname = "localhost"; 

$username = "root"; 

$password = "secret"; 

$database = "prod"; 

if (IsSet ($_POST['submit'])) { 

     $dbh = new mysqli($hostname, $username, $password, $database); 

     /* check connection */ 

     if (mysqli_connect_errno()) { 

          printf("Connect failed: %sn", mysqli_connect_error()); 

          exit (); 

     } 

     $dept_id = $_POST['dept_id']; 

     if ($result_set = $dbh->query("call employee_list( $dept_id )")) { 

          print ('<table border="1" width="30%"> <tr> '. 

               '<td>Employee_id</td><td>Surname</td><td>Firstname</td></tr>');

          while ($row = $result_set->fetch_object()) { 

               printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>n",  

                      $row->employee_id, $row->surname, $row->firstname); 

          } 

     } else { 

          printf("<p>Error:%d (%s) %sn", mysqli_errno($dbh),  

                 mysqli_sqlstate($dbh), mysqli_error($dbh)); 

     } 

     print ("</table> "); 

     $dbh->close(); 

} 

?>

核心代码就是,代码如下:
$result_set = $dbh->query("call employee_list( $dept_id )")

这句employee_list是我们的mysql存储过程.

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

PHP 相关文章推荐
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
php对数组排序代码分享
Feb 24 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
php 获取文件行数的方法总结
Oct 11 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
php实现每日签到功能
Nov 29 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 #PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 #PHP
PHP中require和include路径问题详解
Dec 25 #PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 #PHP
Web程序工作原理详解
Dec 25 #PHP
php更新mysql后获取改变行数的方法
Dec 25 #PHP
php常见的魔术方法详解
Dec 25 #PHP
You might like
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
资源环境与城市管理专业推荐信
2013/11/30 职场文书
手工社团活动方案
2014/02/17 职场文书
租房协议书怎么写
2014/04/10 职场文书
三严三实心得体会范文
2014/10/13 职场文书
志愿者事迹材料
2014/12/26 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
机关保密工作承诺书
2015/05/04 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android