检查mySQL表中的记录数

时间:2015-04-01 20:21:32

标签: php mysql

我正在寻找一种方法来检查mysql表中是否有一定数量的记录。例如:在将数据放入dabase之前的POST请求之后,它首先检查有多少条记录。如果让我们说有24条记录,那么它将根据时间戳删除具有最新日期的记录,然后从POST请求中输入新值。有没有人知道如何做到这一点?期待fpr你的答案。下面我附上了我编写的简单代码,用于将请求中的数据插入到表中。

  <?php
        include("connect.php");

        $link=Connection();

        $temp1=$_POST["temp1"];
        $hum1=$_POST["hum1"];

        $query = "INSERT INTO `tempLog` (`temperature`, `humidity`) 
            VALUES ('".$temp1."','".$hum1."')"; 

        mysql_query($query,$link);
        mysql_close($link);

        header("Location: index.php");
    ?>

1 个答案:

答案 0 :(得分:1)

当你说删除最新日期时,我必须假设你的意思是最早的记录?你的描述并没有告诉我你的日期字段的名称,所以让我们假设它的onDate。你也没有提到你的主键是什么,所以我们假设它只是id。如果在插入之前运行以下查询,它将清除所有最旧的记录,只留下数据库中最新的23个。

delete from templog where id in (
  select id from ( 
    select @rownum:=@rownum+1 'rowid', t.id from templog t, (select @rownum:=0)r order by t.onDate
  )v where v.rowid > 23
);

当然,你应该测试你不介意丢失的数据。

最好每次都要进行清理清除,而不是在添加新行之前删除单行,因为如果发生异常,它将永远不会自行清理到您希望真正拥有的24行。

我还想注意你可能想要一起重新考虑这个方法。而是将数据保留在那里,并且仅在显示日志时查询最近的24。由于您遇到了收集数据的麻烦,因此您可以将其保留以备将来报告。如果您的表格大规模运行一个简单的每日清除查询以删除超过某个阈值的任何内容,那么稍后将在路上。

希望这有帮助。