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 相关文章推荐
我的论坛源代码(四)
Oct 09 PHP
模板引擎Smarty深入浅出介绍
Dec 06 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
PHP身份证校验码计算方法
Aug 10 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
django中的ajax组件教程详解
Oct 18 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
解析thinkphp的左右值无限分类
2013/06/20 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
Python3基础之输入和输出实例分析
2014/08/18 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python实现的爬虫功能代码
2017/06/24 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
python中数字是否为可变类型
2020/07/08 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
优秀学生获奖感言
2014/02/15 职场文书
开业典礼主持词
2014/03/21 职场文书
本科毕业生求职信
2014/06/15 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
病人写给医生的感谢信
2015/01/23 职场文书