php与sql返回值不同是因为代码对结果做了只取当前一行的处理,其解决办法是:1、找到相应的PHP代码文件;2、通过“$query->result()”方法获取完全的结果;3、保存已修改的文件即可。

本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

php 与sql返回值不同怎么办?

具体问题描述:

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

1fd0c1dda4d0942f82ad08ba2bbd62f.jpg

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

657cc1c9e9effe7f67d5e3727dc5a9e.jpg

这是页面的打印结果

d5738aace5cf615346e978e81a07513.jpg

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

解决办法:

ci 框架里面写法和这个很相似。刚才很多人都说了,row 的解释:

0e6e099e6f0d80029a0e36080657440.jpg

如果想要获取完全的结果请使用-$query->result() 来获取结果。

如果是用的CI请看下http://codeigniter.org.cn/user_guide/database/results.html#id2这个地址里面有解释!

总结下:遇到这样的问题可以先看下手册


php 与sql返回值不同怎么办