PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Max Laufende Nummer ermitteln


DanielEXQ
19.12.2002, 17:20:15
Hallo,

ich habe in Tabellen eine Spalte mit einer laufenden Nummer je Zeile! Ich möchte jetzt die maximale Nummer mit PHP in eine Variable selecten. Das ganze soll in einer Fuktionen sein die einen Parmeter hat, auf welche tabelle er damit zugreifen soll!

Wie wird sowas aufgebaut?

Ben20
19.12.2002, 19:58:21
function idselecter($tab) {

[...]Hier Verbindungsaufbau[...]

$x =@mysql_query("SELECT id FROM $tab ORDER BY ID DESC LIMIT 1");

$y = @mysql_result($x, 0, 0);

return $y

}

Erazor
23.12.2002, 13:57:36
Du suchst mysql_insert_id()

http://www.php.net/mysql_insert_id

Gruß Erazor

mad-boy
23.12.2002, 17:04:35
Ich würde die Version von Ben20 nehmen, die ist sicherer! mysql_insert_id() macht ab und zu mal misst!

DanielEXQ
23.12.2002, 17:05:14
danke an euch beiden! beides funzt...

Erazor
26.12.2002, 17:09:30
Original geschrieben von mad-boy
Ich würde die Version von Ben20 nehmen, die ist sicherer! mysql_insert_id() macht ab und zu mal misst!
Das würde ich wirklich nicht tun...
Angenommen im gleichen Augenblick trägt noch jemand ein... dann selectest du die ID von dem anderen... mysql_insert_id() bezieht sich auf deine Verbindung zu MySQL, ist also sicherer.
Außerdem wurde es extra für solche Fälle geschrieben...

Ihr wißt ja, der Teufel ist ein Eichhörnchen. Es kann alles schiefgehen wenn mans nicht brauchen kann.
Mit mysql_insert_id() hatte ich außerdem noch keine Probleme.

Gruß Erazor

mad-boy
26.12.2002, 18:34:29
aha! Und wo bitte schreibt er, dass er den Eintrag haben will, den man selber eben generiert hat? So wie ich das verstanden habe, will er den letzten Eintrag haben, der angelegt wurde, und dann ist die Methode von Ben20 besser! :)

Erazor
27.12.2002, 14:17:58
Ok, wer lesen kann ist klar im Vorteil :D
Das is wenn man sich selbst zu viel denkt :D
sry Ben20 und mad-boy
Ich hab mit meiner Erklärung eigentlich den Grund genannt, warum das in diesem Fall probleme machen würde...

Ansonsten kann man auch mit SELECT MAX(id) from Tabelle
zur allerhöchsten vorhandenen ID kommen.
Der sonstige Source wäre immer noch der von Ben20.

MiH
27.12.2002, 14:35:58
es gibt auch noch den mySQL befehl:

select last_insert_id(SPALTE) from TABLE;

aber das nur zu verwirrung :)

Erazor
27.12.2002, 15:03:35
Soviel zum Thema Text lesen :D Juhuu ich bin nicht der einzige...

LAST_INSERT_ID() macht genau das selbe wie mysql_insert_id().
Nur halt in ner Query. Es ist also immer noch verbindungsbezogen. Wenn jemand in der Zeit nachdem du einträgst aber bevor du abfragst was einträgt, bekommst du trotzdem die ID die du eingetragen hast und nicht die letzte.
Aber auch ich hab den Fragetext nicht ganz so genau gelesen :D

Gruß Erazor