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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
PHP 身份验证方面的函数
Oct 11 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php判断访问IP的方法
Jun 19 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php文件缓存类汇总
2014/11/21 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
php服务器的系统详解
2019/10/12 PHP
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
js html实现计算器功能
2018/11/13 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
对Python定时任务的启动和停止方法详解
2019/02/19 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
2014年党小组工作总结
2014/12/20 职场文书
捐资助学感谢信
2015/01/21 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
外出听课学习心得体会
2016/01/15 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android