打印mysql语句在Navicat有返回值,但是代码运行返回是空的

问题描述

某处调用db 公共函数getRow方法,返回值是:
2018-09-14 17:11:50 ERR: Array
(

[a] => 
[b] => 

)
但是打印出运行的mysql语句在Navicat运行是有值的!
别处也调用这个方法,都是正常的,甚至这一段运行相同业务处理别的数据,返回值也是正常的

问题出现的环境背景及自己尝试过哪些方法

查看getRow内部方法 接受到的sql是正常(外部运行也是有值的),

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

    var_dump($sql);    //语句正常 外部运行有值(使用内部打印函数,不知道方不方便贴出来,就用var_dump代替)
        $res = $this->query($sql,"",$param);
            
            if ($res !== false)
            {
            $res = mysql_fetch_assoc($res);
            logger::write(print_r($res, 1));
            ....
            var_dump(901);
            var_dump($res);    // 2018-09-14 17:11:50 ERR: Array
                                //(
                                //    [a] => 
                                //    [b] => 
                               // )
            return $res;
            }

你期待的结果是什么?实际看到的错误信息又是什么?

请问该往哪个方向去调试,江湖救急,感谢每一个大佬的留言!

阅读 2.4k
3 个回答

不会出现同一句sql 在Navicat和代码中运行结果不同的情况! 出现不同是因为,执行事务时,之前的sql语句影响到了,然后后面执行失败,回滚,导致运行结果不同。

不太了解你的query方法,但是个人觉得调试的时候既然sql语句正常,那么就把res打印输出一下。然后$res 判断最好不要用$res !== false毕竟query后的值要么有,要么为空。

1、mysql_fetch_assoc()是抓取筛选出来的第一条数据进行打印,有没有可能是这个影响的?
2、你先去除判断试试能不能打印出来

$res = $this->query($sql,"",$param);
$res = mysql_fetch_assoc($res);
var_dump($res);    

3、如果这能够打印出数据你再试试

$res = $this->query($sql,"",$param);
if ($res !== false)
{
  $res = mysql_fetch_assoc($res);
  var_dump($res);    
}

只能一步一步排查了,以上是本菜鸟的拙见了,希望能帮到你吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题