【发布时间】:2014-09-13 10:14:45
【问题描述】:
我有一个问题,如何只加载数据库中的新行并将它们显示到页面上,我应该使用 时间戳 来做到这一点吗? Facebook 或 Twitter 如何只加载新的推文或帖子?我猜他们为此使用 timestamp,比如最后一次 ajax 调用什么时候。我知道 SQL 查询,我认为它看起来像这样。
SQL:SELECT * FROM posts WHERE posted_date >= :timestamp,其中 timestamp 是当前时间戳,或者是请求的时间戳。
但是每当我输入任何数字,甚至超过posted_date,它总是返回true,它返回行,我不希望这样。
这是我的 PHP 代码:
$pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '');
$sql = "SELECT * FROM `posts` WHERE `posted_date` >= :curr_time";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':curr_time', $timestamp);
$stmt->execute();
if ($stmt->rowCount() > 0) {
// If there was a result found
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array(
'post_content' => $rows[0]['post_content'],
'timestamp' => strtotime($rows[0]['posted_date'])
));
} else {
// If there was no results
echo json_encode(array('message' => 'No results!'));
}
希望你能理解我。
谢谢:)
【问题讨论】:
-
您遇到的整个“问题”都围绕着定义“新”行是什么。由于你必须告诉我们你认为什么是新行,这个问题是不完整的,因为不清楚你在追求什么。我们不能为你施展黑魔法。
-
新的,我猜你的意思是最近的?您需要在每条记录上存储时间戳/日期时间,然后按此排序
-
新行是 post_content,我只是为了测试和其他东西这样做,所以这样想,用户像 Facebook 的帖子一样向数据库发布一些内容,我只想返回那个新帖子从数据库中,不是所有的......
-
确保为每条记录使用自动递增主键 (id),然后在
INSERT之后使用LAST_INSERT_ID()获取它 -
基本上我想做的是,使用长轮询之类的东西,所以当 user1 发布内容时,它也会在 user2 的页面中更新,就像 Facebook 一样,我不需要现在的 AJAX 和 jQuery,只是 PHP 部分,我想使用
SELECT * FROM posts WHERE posted_date >= :curr_time是正确的方法。如我错了请纠正我。谢谢。