这是我的代码(使用CodeIgniter):
$now = date('Y-m-d');
$then = strtotime($now . '-1 week');
$then = date('Y-m-d', $then);
$q3 = $this->db->query("SELECT *
FROM posts
WHERE publish_date BETWEEN '$then' AND '$now'");
$data['posts_today'] = $q3->num_rows();
本周我显然已经发布了至少20篇帖子,但它只显示“1”。有什么想法吗?
谢谢!
答案 0 :(得分:0)
这适合你吗?
$q3 = $this->db->query("SELECT *
FROM posts
WHERE publish_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK)
AND NOW()");
我看到的潜在问题:
POSTS.publish_date
DATETIME数据类型吗?答案 1 :(得分:0)
验证MySQL是否期望采用该格式的日期。你可能最好使用MySQL的日期函数来组合它们。
答案 2 :(得分:0)
首先,将所有内容卸载到MySQL。你必须做的日期越少,数学就越好。
其次,看看你实际创建的代码是什么样的。改变这个
$q3 = $this->db->query("SELECT *
FROM posts
WHERE publish_date BETWEEN '$then' AND '$now'");
到这个
$sql = "SELECT *
FROM posts
WHERE publish_date BETWEEN '$then' AND '$now'");
print "EXECUTING: $sql\n";
$q3 = $this->db->query( $sql );
您假设您生成的SQL有效,而且可能不是。当您使用一种语言在另一种语言中生成代码时,这种情况非常常见。始终print
来验证您的假设。