$sql="DELETE FROM table ORDER BY sn ASC LIMIT ".$delnum;
$delnum就是你要刪除的筆數,你可以先經由查詢取得要刪除的筆數填進去。
另外,ORDER BY 欄位 ASC是正排序,所以他會把你的sn由小排到大之後,去刪除最小的$delnum筆數。
反過來說,如果指令改成ORDER BY 欄位 DESC的話。
他會把你的SN反過來由大排到小,然後刪除最大的$delnum筆數。
這樣子你就可以自由的決定要刪除的筆數數量。
我剛剛試了一下,這個方式基本上不會發生誤刪。
除非你沒有去定義id或sn排序(主鍵值為自動累加的唯一鍵值)
這個方式也不用去管是什麼時間加入的資料,他只會針對資料的「筆數」去處理。
include "config.php";
$query = "select * from $onlinetable";
$result=mysql_query($query);
$row = @mysql_num_rows($result); //取得資料筆數
if ($row >30){
$delnum = $row -30;
$sql="DELETE FROM $onlinetable ORDER BY id ASC LIMIT ".$delnum;
mysql_query($sql);
}
?>
|