Probleem met checken van laatste record in DB.
Ik zit in de knoop. Waarschijnlijk zie ik iets simpels over het hoofd, ik zoek de query om de laatst toegevoegde record van de db naar voren te halen.
Stukkie code wat ik hiervoor dacht te gebruiken:
Code (php)
1
2
2
$sql = mysql_query("SELECT `nummer` FROM arrow ORDER BY id LIMIT 1") or die(mysql_error());
$check = mysql_fetch_array($sql);
$check = mysql_fetch_array($sql);
Maar dat werkt niet. Als ik echo $check; gebruik komt er alleen Array te staan, maar geen data, terwijl er wel wat in de DB staat.
Iemand een idee?
Gewijzigd op 24/03/2011 13:58:56 door Bart B
Code (php)
1
2
2
$sql = mysql_query("SELECT `nummer` FROM arrow ORDER BY id DESC") or die(mysql_error());
$check = mysql_fetch_array($sql);
$check = mysql_fetch_array($sql);
Als je nu echo $check doet zal die het moeten doen.:P of ik zit nu verkeerd te denken.
EDIT: Het lijkt te werken.. :). ff checken wat ie doet in een uurtje als cron :)
Gewijzigd op 24/03/2011 14:02:46 door Bart B
Ja als je die $check niet door een echo haalt zal die alleen de laatste weergeven.
Bart B op 24/03/2011 13:58:26:
Als ik echo $check; gebruik komt er alleen Array te staan, maar geen data, terwijl er wel wat in de DB staat.
Dat is basic sql kennis.
Je fetched een array dus is het logisch dat er in $check een array zit.
echo $check['veldnaam'];
PS: Bovenstaande antwoorden van Dennis slaan nergens op.
Gewijzigd op 24/03/2011 14:06:47 door - SanThe -
En omdat de query wat ik gaf omgekeerd alle waardes laat zien zul je alleen de hoogste id zien.
Zodra je $check door een while() loop gaat halen zal die bij de laatste beginnen en bij de eerste eindigen.
Hoop dat het een beetje duidelijk is zo.
Dennis meijer op 24/03/2011 14:05:01:
Als je in een tekst bijvoorbeeld die $check 1x laat zien zal die alleen de allereerste waarde laten zien uit de database.
En omdat de query wat ik gaf omgekeerd alle waardes laat zien zul je alleen de hoogste id zien.
Zodra je $check door een while() loop gaat halen zal die bij de laatste beginnen en bij de eerste eindigen.
Hoop dat het een beetje duidelijk is zo.
En omdat de query wat ik gaf omgekeerd alle waardes laat zien zul je alleen de hoogste id zien.
Zodra je $check door een while() loop gaat halen zal die bij de laatste beginnen en bij de eerste eindigen.
Hoop dat het een beetje duidelijk is zo.
Heel slecht voorbeeld!
Op jouw manier haal je dus eerst alle gegevens uit de database. Vervolgens fetch je de gegevens. En daarna gebruik je alleen de gegevens uit het laatste record? Beetje overkill he? En heel erg zinloos. Als je reageert moet je wel het goede voorbeeld geven en niet de topicstarter verkeerde methoden aanleren.
Als je alleen de gegevens nodig hebt van het laatste record dan moet je gewoon "ORDER BY id DESC LIMIT 1" gebruiken! (id kan uiteraard ook een datum veld zijn of iets dergelijks)
Gewijzigd op 24/03/2011 16:39:32 door Arjan -
echo "Hoogste waarde is ". $sql;
Dit zou volgens mij ook gewoon moeten werken
En je kan beter geen or die() gebruiken maar een goede foutafhandeling
Maikel B op 24/03/2011 16:41:35:
$sql = mysql_query("SELECT `nummer` FROM arrow ORDER BY id DESC LIMIT 1") or die(mysql_error());
echo "Hoogste waarde is ". $sql;
Dit zou volgens mij ook gewoon moeten werken
En je kan beter geen or die() gebruiken maar een goede foutafhandeling
echo "Hoogste waarde is ". $sql;
Dit zou volgens mij ook gewoon moeten werken
En je kan beter geen or die() gebruiken maar een goede foutafhandeling
Dit werkt niet, want je zal het resultaat altijd moeten fetchen om deze uit te kunnen lezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$query = "SELECT nummer FROM arrow ORDER BY id LIMIT 1";
$sql = mysql_query($query);
if($sql){
while ($row = mysql_fetch_assoc($sql)) {
echo $row['nummer'];
}
}
else{
echo 'error';
}
?>
$query = "SELECT nummer FROM arrow ORDER BY id LIMIT 1";
$sql = mysql_query($query);
if($sql){
while ($row = mysql_fetch_assoc($sql)) {
echo $row['nummer'];
}
}
else{
echo 'error';
}
?>
geen or die, geen backticks
Een sortering op id wat hoogst waarschijnlijk sequentieel gedefineerd staat, daarvan kan je niet zeggen dat het hoogste nummertje het laatst toegevoegde record is.
Dus kappen met die rare fratsen om te sorteren op een niets zeggend iets.