我有一个脚本可以将推文添加到数据库,另一个脚本通过php / ajax获取这些推文和显示。这一切都适用于空数据库,但如果我已经有很多推文那么它会运行intp问题。我现在要做的是设置msql查询以获得第一个说500行,然后继续添加推文并忽略早期的500条推文等。所以从最新一行开始,获取最新的行达到500max然后下次查询时,每人得到1001,1002,1003。
关于我如何做到这一点的任何想法?一旦获得最新的500行,我可以设置一个变量来改变查询??
感谢
编辑:
$ts = mysql_real_escape_string($_GET['lasttweet']);
$result = mysql_query("SELECT tweet_id, tweet_text, screen_name FROM tweets WHERE tweet_id > $ts LIMIT 100") or die (mysql_error());
Thsi是我为查询尝试过的,但是每次它只获得另外100个旧帖子,我需要它从那时开始获取新帖子。
答案 0 :(得分:0)
你必须保留一个不同的字段,例如'tweeted',默认值为0,一旦你获取500条记录,将这些记录的更新推文字段改为1,并将你的选择语句修改为
"SELECT tweet_id, tweet_text, screen_name FROM tweets WHERE tweeted != 1 LIMIT 500"
答案 1 :(得分:0)
如果您不想更新记录,请使用LIMIT子句的完整版本。
SELECT ... FROM tweets WHERE ... LIMIT 1 500
SELECT ... FROM tweets WHERE ... LIMIT 501 500
SELECT ... FROM tweets WHERE ... LIMIT 1001 500
当然,这意味着您需要跟踪上次检索的哪个区块。
答案 2 :(得分:0)
$ts = mysql_real_escape_string($_GET['lasttweet']);
mysql_query('SET CHARACTER SET utf8');
//Query to get number of rows
$numRows = mysql_query("SELECT tweet_id FROM tweets ") or die (mysql_error());
$rows = mysql_num_rows($numRows);
//Only show last/latest 500 tweets
$tweetLimit = 500;
if($_GET['lasttweet'] == 0){
if($rows > $tweetLimit){
$startFrom = $rows - $tweetLimit;
}
}else{
$startFrom = 0;
}
$result = mysql_query("SELECT tweet_id, tweet_text, screen_name, profile_image_url
FROM tweets
WHERE tweet_id > $ts
ORDER BY tweet_id
LIMIT $startFrom, $tweetLimit
")
or die (mysql_error());