PHP / MYSQL - 限制为最后500然后继续

时间:2013-11-20 07:25:33

标签: php mysql ajax database

我有一个脚本可以将推文添加到数据库,另一个脚本通过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个旧帖子,我需要它从那时开始获取新帖子。

3 个答案:

答案 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());