PHP调用MySQL存储过程并返回值的方法

 更新时间:2014年12月26日 09:14:05   投稿:shichen2014  
这篇文章主要介绍了PHP调用MySQL存储过程并返回值的方法,较为详细的分析了存储过程的使用技巧,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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 伪静态隐藏传递参数名的四种方法

    PHP伪静态的使用主要是为了隐藏传递的参数名,今天介绍的PHP伪静态的方法总共有四种方法以加深对PHP伪静态的了解。
    2010-02-02
  • 关于php连接mssql:pdo odbc sql server

    关于php连接mssql:pdo odbc sql server

    研究了很久,终于发现:最新的php 5.3.6中php_mssql.dll,php_pdo_mssql.dll都已经不见了。
    2011-07-07
  • php中rsort函数实例用法

    php中rsort函数实例用法

    在本篇文章里小编给大家分享的是一篇关于php中rsort函数实例用法内容,有兴趣的朋友们可以学习下。
    2021-01-01
  • PHP页面静态化的优缺点与实现

    PHP页面静态化的优缺点与实现

    众所周知,页面静态化是门户网站研发中必备的一项技能,本课程从纯静态化和伪静态化两个角度进行分析,带领大家掌握在PHP中如何生成纯静态化页面,在WEB服务器中如何配置伪静态,帮助大家掌握又一项加薪利器
    2023-02-02
  • php读取XML的常见方法实例总结

    php读取XML的常见方法实例总结

    这篇文章主要介绍了php读取XML的常见方法,结合实例形式总结了php基于DOMDocument、simplexml、正则及xmlreader读取xml文件的相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • 用PHP编写每周签到功能以提高用户参与度

    用PHP编写每周签到功能以提高用户参与度

    这篇文章主要介绍了用PHP编写每周签到功能以提高用户参与度,签到系统是一种轻量、互动性强的营销方式,通过用户签到获取免费权益,引导用户形成每天、每周等的习惯性操作,从而达到品牌推广的目的
    2023-04-04
  • 关于php mvc开发模式的感想

    关于php mvc开发模式的感想

    使用mvc开发已经有一段很长时间了,发现了一些问题。
    2011-06-06
  • PHP CURL模拟GET及POST函数代码

    PHP CURL模拟GET及POST函数代码

    PHP CURL模拟GET及POST函数代码,需要的朋友可以参考下。
    2010-04-04
  • PHP设计模式之命令模式示例详解

    PHP设计模式之命令模式示例详解

    这篇文章主要给大家介绍了关于PHP设计模式之命令模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • php echo, print, print_r, sprintf, var_dump, var_expor的使用区别

    php echo, print, print_r, sprintf, var_dump, var_expor的使用区别

    本篇文章是对php中echo, print, print_r, sprintf, var_dump, var_expor的使用区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论