mysql php调用存储过程_PHP如何调用MYSQL的存储过程?

2019-06-06 回答

站长注:一个存储过程是一个可编程的函数,当希望在不同的应用程序或者平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的!

  

以下是详细代码:

  

<meta charset=’utf-8′>
  <?php

  

$host=”localhost”;
  $user=”root”;
  $pwd=”root”;
  $dbname=”test”;
  $link = mysql_connect($host, $user, $pwd)or die(“could not connect: ” . mysql_error());
  mysql_select_db($dbname, $link) or die (‘can\’t use test : ‘ . mysql_error());
  mysql_query(“set names ‘utf8′”);
  mysql_query(“set character_set_client=utf8″);
  mysql_query(“set character_set_results=utf8″);

  

//检查存储过程是否已经存在
  $procedure_check=”show create procedure total_users”;
  $is_exist=mysql_query($procedure_check);

  

$procedure_check2=”show create procedure page_users”;
  $is_exist2=mysql_query($procedure_check2);

  

if(!$is_exist){
  //由于存储过程执行一次后,只要没有drop掉就始终存在,所以对于
  //查询总量的存储过程来说只需要声明一次就可以,如果已经存在就不重复声明

  

//声明检索总用户数的存储过程
  $sql_total=”
  #basic stored procedure example
  create procedure total_users(out total int(10))
  begin
   select count(*) into total from user;
  end
  “;
  mysql_query($sql_total);
  }
  //调用存储过程
  mysql_query(“call total_users(@total_num);”);
  $total_res=mysql_query(“select @total_num”);

  

//获取用户总数
  $total_num=mysql_fetch_array($total_res);
  //获取当前页
  $page=$_request['page']?$_request['page']:1;
  //设置每页显示多好条记录
  $page_size=2;
  //设置limit偏量
  $off=($page-1)*$page_size;
  //计算页面总数,注意键名,当然你也可以使用数字下标
  $page_num=ceil($total_num['@total_num']/$page_size);

  

if(!$is_exist2){
  //同上,只需要声明一次 
  //检索分页用户数的存储过程,这里传入2个参数,都是整型
  $sql_page=”
  #basic stored procedure example
  create procedure page_users(in off int(10),in page_size int(10))
  begin
   select * from user limit off,page_size;
  end
  “;
  //建立存储过程
  $is_procedure=mysql_query($sql_page);
  }
  //调用分页存储过程,传递参数
  $res=mysql_query(“call page_users($off,$page_size)”);
  while ($arr=mysql_fetch_array($res,mysql_assoc)){
  echo ‘id:’.$arr['id'].’<br>’;
  echo ‘user:’.$arr['user'];
  echo ‘<hr>’;
  }

  

//显示分页
  for($i=1;$i<=$page_num;$i++){
   echo ‘<a href=”?page=’.$i.’”>['.$i.']</a>’;
  }
  ?>
  ———–复制下面的sql语句到phpmyadmin执行以生成测试数据———-

  

– phpmyadmin sql dump
  – version 3.3.9.2
– http://www.phpmyadmin.net
  –
  – 主机: localhost
  – 生成日期: 2002 年 01 月 01 日 04:57
  – 服务器版本: 5.5.9
  – php 版本: 5.3.5

  

set sql_mode=”no_auto_value_on_zero”;
  /*!40101 set @old_character_set_client=@@character_set_client */;
  /*!40101 set @old_character_set_results=@@character_set_results */;
  /*!40101 set @old_collation_connection=@@collation_connection */;
  /*!40101 set names utf8 */;

  


  – 数据库: `test`
  –

  

– ——————————————————–

  


  – 表的结构 `user`
  –

  

create table if not exists `user` (
    `id` int(10) unsigned not null auto_increment,
    `user` varchar(6) not null,
    `pwd` varchar(30) not null,
    primary key (`id`)
  ) engine=innodb  default charset=utf8 auto_increment=19 ;

  


  – 转存表中的数据 `user`
  –

  

insert into `user` (`id`, `user`, `pwd`) values
  (11, ‘测试2′, ‘测试2′),
  (12, ‘测试1′, ‘测试1′),
  (13, ‘测试3′, ‘测试3′),
  (15, ‘测试4′, ‘测试4′),
  (16, ‘测试5′, ‘测试5′),
  (17, ’222′, ’111′),
  (18, ’222a’, ’111a’);
  ——————————————————–

  

下载本程序示例包: http://www.phptogether.com/download/procedure.rar

  

ok,一个简单的存储过程实现的分页就到此结束了,如果有什么疑问或者更好的实现方式可以联系站长哦!o(∩_∩)o ~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值