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初学者头痛的十四个问题
Jul 12 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
php获取网页上所有链接的方法
Apr 03 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 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自定义大小验证码的方法详解
2013/06/07 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
js实现无缝滚动图
2017/02/22 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
详解python Todo清单实战
2018/11/01 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python 弧度与角度互转实例
2020/04/15 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
团组织关系介绍信
2014/01/12 职场文书
中学生期末评语
2014/02/03 职场文书
教师网络培训感言
2014/03/09 职场文书
亲属关系公证书
2014/04/08 职场文书
小露珠教学反思
2014/04/30 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
绿色环保口号
2014/06/12 职场文书
超市开店计划书
2014/09/15 职场文书
税务会计岗位职责
2015/04/02 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers