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统计文件大小,以GB、MB、KB、B输出
May 29 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php cli换行示例
Apr 22 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
php一个找二层目录的小东东
2012/08/02 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
百度地图API使用方法详解
2015/08/25 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python3中eval函数用法使用简介
2019/08/02 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
25道Java面试题集合
2013/05/21 面试题
环境科学专业个人求职信
2013/09/26 职场文书
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
大学自我鉴定范文
2013/12/26 职场文书
运动会广播稿80字
2014/01/23 职场文书
大学生求职信范文
2014/05/24 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
在校生证明
2015/06/17 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python