Archief - PHP: de oudste rij uit een db selecteren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

ducky hutty

Legacy Member
Ik heb een table met enkele duizenden waarden. Wanneer een bepaalde maximumwaarde (bv 3000) overschreden wordt moet het script de oudste duizend records wegschrijven naar een txt op de server.

Hoe kan ik de oudste duizend records in een keer selecteren en wegschrijven zonder dat ik een lus moet schrijven die zichzelf duizend keer herhaalt?
Hoe zou u dit oplossen?
MVG, Schiette

ducky hutty

Legacy Member
Zero Grav zei:
ORDER BY `id` DESC LIMIT 3000 lijkt mij het evidentste.
Kan je aub een klein voorbeeldje geven, want dit is erg nieuw voor mij.

/edit: ik heb het gevonden en het werkt, maar het is ASC ipv DESC

Zero Grav

Legacy Member
Nja, 'k heb uw vraag eigenlijk fout gelezen

$Mysql = mysql_query("SELECT COUNT(celnaam) FROM `databank`");
$Mysql = mysql_fetch_array($Mysql);

if($Mysql >= 3000) {
$Mysql = mysql_query("SELECT cel1,cel2,cel3,cel4 FROM `databank` ORDER BY `cel1` DESC LIMIT 1000");
$gegevens = Mysql_fetch_object($Mysql);
}

En dan kunt ge beginnen met wegschrijven. Maar feitelijk.

http://dev.mysql.com/doc/mysql/en/select.html

into outfile lijkt mij iets evidenter nu'k eraan denk.


Maar nu heb ik eigenlijk zelf een vraag gericht naar Darkbone of Killgore. Zijn er problemen bekend met INTO OUTFILE? Ik heb dat namelijk zelf al proberen te gebruiken voor de database van een vriend te back-uppen en hij geeft altijd een error (Can't create/write to file 'backup\test.sql' (Errcode: 2)).

ducky hutty

Legacy Member
Sorry, maar Killgore is op reis...
Maar bedankt voor het antwoorden...

Lashknife

Legacy Member
zero, kheb die functies niet gechecked, maar heeft een sql server wel de access om iets in uw docroot te schrijven? zou daar wel eens aan kunnen liggen...

dJeez

Legacy Member
Je MySQL gebruiker moet zelf de nodige permissies hebben (nl. het FILE privilege binnen MySQL zelf), hij moet uiteraard kunnen schrijven naar de plaats waar je het bestand wil neerpoten als je SELECT ... INTO OUTFILE gebruikt èn het bestand waar je naar wil schrijven mag nog niet bestaan.

Zero Grav

Legacy Member
Dan lijkt het mij, aan de error te zien, dat ik niet genoeg rechten heb om te schrijven in die folder. Het is mijn eigen offline server, dus welke aanpassingen zou ik het beste doorvoeren om deze rechten (offline dan toch al) te kunnen verkrijgen?

Of een andere manier om een snelle back-up van de database te maken die ik zelf via de site kan inbouwen. Phpmyadmin's manier ondervinden bleek me uiteindelijk toch net iets te ingewikkeld.

DJ_Trash

Legacy Member
als ge uw id veld (wa ge hopelijk wel helpt , voor neem nu, uwe PK) daar inderdaad de laagste neemt, hebde uw oudste record.

select id from table order by 1 asc limit 1 of azoiets

dJeez

Legacy Member
Zero Grav zei:
Dan lijkt het mij, aan de error te zien, dat ik niet genoeg rechten heb om te schrijven in die folder. Het is mijn eigen offline server, dus welke aanpassingen zou ik het beste doorvoeren om deze rechten (offline dan toch al) te kunnen verkrijgen?
Hangt van het OS af dat je gebruikt. Ik dacht dat je bij Windows in principe niets moest wijzigen, maar geef je wel het volledige pad naar het bestand (dus incl. schijf) mee? Op Linux moet je ervoor zorgen dat de mysql user of group mag schrijven in de folder (via chmod).
Zero Grav zei:
Of een andere manier om een snelle back-up van de
database te maken die ik zelf via de site kan inbouwen. Phpmyadmin's manier ondervinden bleek me uiteindelijk toch net iets te ingewikkeld.
Kijk dan de documentatie van mysqldump eens na, die gebruiken wij hier om dagelijks een backup te maken van onze interne databases.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan