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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
flash用php连接数据库的代码
Apr 21 PHP
php生成html文件方法总结
Dec 01 PHP
PHP排序算法类实例
Jun 17 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP chunk_split()函数讲解
Feb 12 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-FPM 的管理和配置详解
2019/02/17 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
Javascript之文件操作
2007/03/07 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
javascript实现留言板功能
2020/02/08 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Python2与Python3的区别点整理
2019/12/12 Python
Python原始套接字编程实例解析
2020/01/29 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
基于python实现坦克大战游戏
2020/10/27 Python
Python如何批量生成和调用变量
2020/11/21 Python
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
如何利用find命令查找文件
2016/11/18 面试题
2014年会演讲稿范文
2014/01/06 职场文书
销售辞职报告范文
2014/01/12 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
2015毕业寄语大全
2015/02/26 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
2016年教师节慰问信
2015/12/01 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫