Ik wil van een script alleen de laatste 500 rijen in de database behouden.
Rij 501 moet dus automatisch verwijderd worden uit de database, dit krijg ik niet voor elkaar.
Ten eerste niet de check op welke weg moeten op id doen, want als er eens eentje tussenuit gehaald wordt klopt het al niet meer. Daarnaast zal je auto_increment weer bij 1 beginnen op het moment dat je aan de limiet van je data type zit en zit je dus ook alweer met een probleem. Veel beter is om een veld 'create_date' of iets dergelijks bij te houden. Dat zet je op een TIMESTAMP type en aan de hand daarvan kan je bepalen welke rijen behouden moeten worden:
SELECT id, create_date
FROM tabel
ORDER BY create_date DESC
LIMIT 499, 1
DELETE FROM tabel
WHERE id < :id AND create_date <= :create_date
Je zoekt dus eerst het vijfhonderdste record en dan haal je alle records weg die een lager id hebben en een oudere create_date. Merk wel op dat ik hier <= heb gebruikt bij create_date, aangezien je ook nog records kunt hebben met dezelfde timestamp.
Op deze manier escape je de php variabelen.
('".$kolom1."', '".$kolom2."', '".$kolom3."')";
Wil er max 500 records in hebben, dan is het voor een insert eerst een select te doen, en vervolgens met mysql_num_rows() kijken hoeveel records het zijn. Zijn het er 500 dan voor je er geen meer op.