PHP调用存储过程返回值不一致问题的解决方法分析


Posted in PHP onApril 26, 2016

本文实例讲述了PHP调用存储过程返回值不一致问题的解决方法。分享给大家供大家参考,具体如下:

今天遇一个同学聊存储过程返回值经常得到意外的值为null, 因为白天有事,晚上给做一个实验放在这里供有相应问题的同学查看一下。

存储过程:

delimiter//
createprocedureusp_s2(outpar1int)
begin
selectinet_ntoa(ip),portfromproxy_listlimit5;
selectcount(*)intopar1fromproxy_list;
END//
delimiter;

session 1执行:

mysql>callusp_s2(@a);
+—————+——+
|inet_ntoa(ip)|port|
+—————+——+
|1.34.21.86  |8088|
|1.34.59.50  |8088|
|1.34.69.15  |8088|
|1.34.73.110  |8088|
|1.34.76.218  |8088|
+—————+——+
5rowsinset(0.00sec)
QueryOK,1rowaffected(0.01sec)
mysql>select@a;
+——+
|@a  |
+——+
|4430|
+——+
1rowinset(0.00sec)

session 2执行:

mysql>select@a;
+——+
|@a  |
+——+
|NULL|
+——+
1rowinset(0.00sec)

可见两个session得到的结果不一致。 基本可以肯定两次调用落入不同的会话中会得到不同的值。
为了一致可以如用如下调用:

<?php
$hostname="127.0.0.1";
$username="wubx";
$password="wubxwubx";
$database="proxydb";
$db=newmysqli($hostname,$username,$password,$database);
if(mysqli_connect_errno()){
    printf("Connect failed: %s\n",mysqli_connect_error());
    exit();
}
$result=$db->multi_query("call usp_s2(@total); select @total;");
if($result){
    do{
    if($r=$db->store_result()){
        if($r->field_count==2){
            while($row=$r->fetch_row()){
                print"ip: $row[0], port: $row[1]\n";
            }
        }else{
            $row =$r->fetch_row();
            print"total: $row[0]\n";
        }
    }
    }while($db->next_result());
}
$db->close();
?>

$phpt_proc_return.php
ip:1.34.21.86,port:8088
ip:1.34.59.50,port:8088
ip:1.34.69.15,port:8088
ip:1.34.73.110,port:8088
ip:1.34.76.218,port:8088
total:4430

Good luck.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
精通php的十大要点(上)
Feb 04 PHP
ajax php 实现写入数据库
Sep 02 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 PHP
PHP抓取及分析网页的方法详解
Apr 26 #PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 #PHP
基于PHP实现通过照片获取ip地址
Apr 26 #PHP
各种快递查询--Api接口
Apr 26 #PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 #PHP
Yii2增加验证码步骤详解
Apr 25 #PHP
Yii实现显示静态页的方法
Apr 25 #PHP
You might like
mysql+php分页类(已测)
2008/03/31 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
Python import用法以及与from...import的区别
2015/05/28 Python
python中的编码知识整理汇总
2016/01/26 Python
python决策树之C4.5算法详解
2017/12/20 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
flask应用部署到服务器的方法
2019/07/12 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
中学生自我鉴定
2014/02/04 职场文书
党员服务承诺书
2014/05/28 职场文书
镇创先争优活动总结
2014/08/28 职场文书
商品陈列协议书
2014/09/29 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
python析构函数用法及注意事项
2021/06/22 Python
聊聊Python String型列表求最值的问题
2022/01/18 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL