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 相关文章推荐
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
php生成短网址示例
May 05 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
PHP实现动态web服务器方法
Jul 29 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
Python 函数基础知识汇总
2018/03/09 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
基于Python解密仿射密码
2019/10/21 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python 弧度与角度互转实例
2020/04/15 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
自主招生自荐信指南
2014/02/04 职场文书
共产党员承诺书
2014/03/25 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
行政管理专业求职信
2014/07/06 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
工作简报范文
2015/07/21 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
Go使用协程交替打印字符
2021/04/29 Golang