四时宝库

程序员的知识宝库

PHP中MySQL查询表的行记录数之count(*)以及date()获取时间问题

昨天在做项目时,遇到几个小问题,今天总结一下分享给大家。

问题1:MySQL中select查询语句中多了空格,导致报语法错,但是很难发现问题。

正常语句:"select * from table group by name order by id"

错误语句:"select * from table group by name order by id"

对比上面两个语句,错误语句中在from后边可能敲代码时多打了一个空格,导致语法错误。在众多代码中很难发现。这个虽然不是什么高大上问题,但是一旦遇到很头疼。

问题2:select count(*) 语句发现不论表中有多少行,查询结果始终1。

$sql="select count(*) as total from login_log order by id";

$result=$mysqli->query($sql);//查询符合条件的记录总数

$num = $result->num_rows;

echo $num;

print_r($result)结果:mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 1 [type] => 0 )

echo $num结果为1.

原因:count(*)的输出结果为长度是1的数组,所以不管表中有多少行,结果都是1。

解决办法:将 $num = $result->num_rows修改为$num = $result->fetch_row()。

问题3:date("Y-m-d H:i:s")函数获取的时间2017-07-26 03:56:05不是想要的。

原因:PHP默认时区不是北京。

解决办法:在获取时间date("Y-m-d H:i:s")前加如下代码:date_default_timezone_set(PRC);其中,PRC的值可以为:Asia/Chongqing ,Asia/Shanghai,Asia/Beijing等。或者date("Y-m-d H:i:s", time()+8*60*60)。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接