mysql - PHP项目中sql查询和在数据库中查询结果不同?

 陈上意535 发布于 2022-11-14 19:45

想要的查询结果:传入手机号和类型,把Y-m-d H:i:s文本格式的时间字段转换成Y-m-d的格式,并分组+统计个数


这是项目里的sql语句,注:返回结果的语句项目里有重写,返回的是查询的所得到的所有结果,并不是返回一行的结果(天啊,我再重点重申一次,人家重写了!人家重写了!人家重写了!不要再用惯性思维看了...)

public function getSmsByTelephone($sms_mobile,$type) {
    $query = $this->db->query("SELECT DATE_FORMAT(`add_date`, '%Y-%m-%d') num,count(*)  FROM " . DB_PREFIX . "sms_mobile WHERE sms_mobile = '" . $sms_mobile ."' AND  type = '" . $type . "' group by num");
    
    return $query->row;
}

这是在phpadmin里的查询结果


这是程序里获取的方法,然后打印


这是页面的打印结果


疑问:底层sql语句都是用$this->db->query去查询,不会在底层对sql语句加限制,要限制,就自己在sql里加limit去限制条数。
我的sql也没有限制limit,不知道为什么只出来一条

7 个回答
  • 建议获取最后一条sql语句来查看这条语句有什么问题:

        $this->db->getLastSql($this->name);
    2022-11-14 20:07 回答
  • 从你返回的结果看,可以肯定的是对结果做了只取当前一行的处理,不是limit的问题,要不然的话,返回结果是这样的

    array(1){
        [0]=>array(2){
            "num" => string(10)"xxxx",
            "count" => string(1)"2"
        }
    }
    

    基本上就是row()的问题了,你可以把这个方法的代码贴出来

    2022-11-14 20:07 回答
  • @始终一个人 个人推测你用的是CI的框架。
    ci 框架里面写法和这个很相似。刚才很多人都说了,row 的解释:

    如果想要获取完全的结果请使用-$query->result() 来获取结果。
    @始终一个人 如果是用的CI请看下http://codeigniter.org.cn/use... 这个地址里面有解释!

    总结下:遇到这样的问题可以先看下手册,技术就是在不断的解决问题中成长的,多交流!

    2022-11-14 20:07 回答
  • 呵呵哒,你找到重写的那个地方,看看写成啥了,确定是不是返回一行,再来问吧。。

    2022-11-14 20:07 回答
  • 谢邀。


    看到您是直接输出的Row。我估计您用的是什么框架,Row本身就是一行的意思

    row 
    n. 行,排;划船;街道;吵闹

    楼主看这里 POD 手册 ,然后框架中底层它封装的极有可能就是PDO 的Fetach PDOStatement::fetch ,再看看您的手册吧,方法调用错啦

    2022-11-14 20:07 回答
  • 看起来就像是你只返回了一行的结果,你再检查一下你返回结果的代码。

    2022-11-14 20:07 回答
  • return $query->row;
    这不是返回一条数据的意思吗?

    2022-11-14 20:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有