mysql - PHP项目中sql查询和在数据库中查询结果不同?
天蓬老师
天蓬老师 2017-04-11 09:58:38
[PHP讨论组]

想要的查询结果:传入手机号和类型,把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)
PHP中文网

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

大家讲道理

看起来就像是你只返回了一行的结果,你再检查一下你返回结果的代码。

黄舟

谢邀。


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

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

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

PHP中文网

呵呵哒,你找到重写的那个地方,看看写成啥了,确定是不是返回一行,再来问吧。。

ringa_lee

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

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

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

大家讲道理

从你返回的结果看,可以肯定的是对结果做了只取当前一行的处理,不是limit的问题,要不然的话,返回结果是这样的

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

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

PHP中文网

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

    $this->db->getLastSql($this->name);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号