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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
PHP中文件上传的一个问题
Sep 04 PHP
php eval函数用法总结
Oct 31 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php学习笔记之基础知识
Nov 08 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
php实现自动生成验证码的实例讲解
Nov 17 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
php学习之流程控制实现代码
2011/06/09 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
安全生产管理责任书
2014/04/16 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
人事任命书怎么写
2014/06/05 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
golang日志包logger的用法详解
2021/05/05 Golang