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

 小HuLkfz_264 发布于 2022-11-28 12:55

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


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

publicfunctiongetSmsByTelephone($sms_mobile,$type){$query=$this->db->query("SELECTDATE_FORMAT(`add_date`,'%Y-%m-%d')num,count(*)FROM".DB_PREFIX."sms_mobileWHEREsms_mobile='".$sms_mobile."'ANDtype='".$type."'groupbynum");return$query->row;}

这是在phpadmin里的查询结果


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


这是页面的打印结果


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

7 个回答
  • return$query->row;
    这不是返回一条数据的意思吗?

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

    2022-11-28 13:33 回答
  • 谢邀。


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

    rown.行,排;划船;街道;吵闹

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

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

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

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

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

    2022-11-28 13:33 回答
  • 从你返回的结果看,可以肯定的是对结果做了只取当前一行的处理,不是limit的问题,要不然的话,返回结果是这样的

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

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

    2022-11-28 13:33 回答
  • 建议获取最后一条sql语句来查看这条语句有什么问题:

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