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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
php目录操作实例代码
Feb 21 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 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
收音机的保养
2021/03/01 无线电
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
实用函数7
2007/11/08 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
js实现水平滚动菜单导航
2017/07/21 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python反转序列的方法实例分析
2018/03/21 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python ATM功能实现代码实例
2020/03/19 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
服务之星获奖感言
2014/01/21 职场文书
广播体操口号
2014/06/18 职场文书
护士2014年终工作总结
2014/11/11 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python