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中的cookie不用刷新就生效的方法
Feb 04 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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
解决GD中文乱码问题
2007/02/14 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
PHP实现简易blog的制作
2016/10/24 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
jQuery根据表单name获取值的方法
2016/05/24 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
angular4自定义组件详解
2017/09/28 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
Python基于locals返回作用域字典
2020/10/17 Python
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
会计出纳岗位职责
2013/12/25 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
安全生产承诺书范文
2014/05/22 职场文书
行政求职信
2014/07/04 职场文书
四风对照检查材料范文
2014/09/27 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
清明节寄语2015
2015/03/23 职场文书
你会写请假条吗?
2019/06/26 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书