order by lpad
sergio
- php
Hallo,
Seit dem ich in meiner datenbank den feldtyp von TEXT auf INT umgestellt habe funktioniert folgende funktion nur noch fehlerhaft:
function xxx($vari)
{
-> include datenbankconnection <-
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY LPAD(abc, 10, 0) DESC LIMIT 1 ";
$result = mysql_query($qry);
if (mysql_num_rows($result)) $abc = mysql_result($result, 0, 0)+1;
else $abc = 1;
return $abc;
}
ich suche also die nächsthöhere id aus dem feld was jetzt ja auf INT steht, als es auf TEXT stand lief alles noch prima, aber wieso findet er dann plötzlich als höchste id nur noch die id die als letztes hinzugefügt wurde als alles noch auf TEXT stand?
bitte helft mir. und n neuen code brauch ich jetzt ja wohl auch ;-) weil zurück auf TEXT will ich auch nicht umstellen, weil ich dann mit BETWEEN nicht korrekt suchen kann.
DANKE
sergio
Hi,
ich suche also die nächsthöhere id aus dem feld was jetzt ja auf INT steht, als es auf TEXT stand lief alles noch prima, aber wieso findet er dann plötzlich als höchste id nur noch die id die als letztes hinzugefügt wurde als alles noch auf TEXT stand?
der Code und so scheint OK zu sein. Versuche doch mal mit der MAX() den hoechsten Wert zu holen. Was passiert?
Gruss,
Ludger
Hallo,
der Code und so scheint OK zu sein. Versuche doch mal mit der MAX() den hoechsten Wert zu holen. Was passiert?
MAX() kenne ich nicht. wo baue ich den denn ein? hört sich aber schon mal gut an :-)
sergio bedankt sich!
yo,
Seit dem ich in meiner datenbank den feldtyp von TEXT auf INT umgestellt habe funktioniert folgende funktion nur noch fehlerhaft:
welchen feldtyp hast du den umgestellt abc ?
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY LPAD(abc, 10, 0) DESC LIMIT 1 ";
LPAD ist eine zeichenkettenfunktion. sollte abc vom typ integer sein, so werden die eingefügten 0 durch LPAD sowieso keine wirkung haben, da integer keine führenden nullen besitzt und somit wird sich auch die sortierung verändern.
Ilja
yo,
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY LPAD(abc, 10, 0) DESC LIMIT 1 ";
habe vergessen zu erwähnen, dass eine sortierung bei dieser query sowieso sinnlos ist, da durch die WHERE klausel nur ein wert zugelassen wird.
Ilja
Hi,
sergio bedankt sich!
und wird mal weiter gucken ;-)
tsja,
vielen dank!
function xxx($vari)
{
-> include datenbankconnection <-
-----
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY abc DESC LIMIT 1 ";
-----
$result = mysql_query($qry);
if (mysql_num_rows($result)) $abc = mysql_result($result, 0, 0)+1;
else $abc = 1;
return $abc;
}
so gehts
yo,
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY abc DESC LIMIT 1 ";
nochmal der tipp, das ORDER BY abc ist hier einfach nur überflüssig.
Ilja
Hi,
$qry = "SELECT abc FROM $table WHERE abc='$vari' ORDER BY abc DESC LIMIT 1 ";
nochmal der tipp, das ORDER BY abc ist hier einfach nur überflüssig.
stellt allerdings sicher, dass wenn doch mehrere Datensaetze gefunden werden nur einer ins Recordset geladen wird.
Sollten da zwei drin sein, koennte das Programm ja veilleicht ABSTUERZEN.
;-)
Gruss,
Ludger
yo,
nochmal der tipp, das ORDER BY abc ist hier einfach nur überflüssig.
stellt allerdings sicher, dass wenn doch mehrere Datensaetze gefunden werden nur einer ins Recordset geladen wird.
das macht aber das limit und nicht das order by....
Ilja