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 相关文章推荐
15种PHP Encoder的比较
Mar 06 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
php事件驱动化设计详解
Nov 10 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
PHP实现的策略模式示例
Mar 20 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
完善的jquery处理机制
2016/02/21 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
Python比较配置文件的方法实例详解
2019/06/06 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Python如何输出警告信息
2020/07/30 Python
小结Python的反射机制
2020/09/28 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
学生会竞选演讲稿学习部
2014/08/25 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
经典爱情感言
2015/08/03 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
利用Python+OpenCV三步去除水印
2021/05/28 Python
Nginx源码编译安装过程记录
2021/11/17 Servers
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电