Höchste id ermitteln?

svennson

Erfahrenes Mitglied
Hi,
ich versuche hier grade aus ner Tabelle wo die id automatisch zugewiesen wird die höchste id auszulesen. Ich habs mit max() und mysql_insert_id() probiert, weil ich das hier schonmal gelesen hatte, aber anstatt der 7 kriege ich die Werte 3-4 btw. 0 ausgegeben.
Wäre net wenn mir einen nen Lösungsvorschlag geben könnte.
Danke schonmal im Voraus ;)

MFG,
Sven
 
Code:
SELECT max(id) FROM tabelle
Muss eigentlich gehen.
Code:
SELECT id FROM tabelle ORDER BY id DESC LIMIT 1
Das sollte zur Not auch funktionieren.
 
Hi,
ich hab diese Abfragen geschrieben:
PHP:
<?php 
mysql_connect("localhost", "Sven", "sven") or die ("mysql_error()");

mysql_select_db("aktuelles") or die ("mysql_error()");

$sql =mysql_query("SELECT max(id)  FROM news");
$last = mysql_query("SELECT id FROM news ORDER BY id DESc Limit 1");
if($sql == false)
{
echo"Abfrage fehlgeschlagen";
}
else
{
print $sql;
print $last;
}
?>

Die höchste id ist 7, also sollte es ja auch 7 zurückgeben, aber es kommt das heraus:
Code:
Resource id #3
Resource id #4
Oder verpeil ich jetzt irgendwas vollkommen?
 
svennson hat gesagt.:
Oder verpeil ich jetzt irgendwas vollkommen?
Vermutlich ja.
Da auch dies ein ganz normales Query ist, musst Du auch hier die Ergebniszeile mit [phpf]mysql_fetch_array[/phpf] oder verwandten Funktionen auslesen.

Gruß hpvw
 
Hi,
hab das mit mysql_fetch_object(); versucht auszugeben, aber klappt nicht richtig :(
Hier mein Code:
PHP:
<?php 
mysql_connect("localhost", "Sven", "sven") or die ("mysql_error()");
mysql_select_db("aktuelles") or die ("mysql_error()");

$sql =mysql_query("SELECT max(id)  FROM news");
if($sql == false)
{
echo"Abfrage fehlgeschlagen";
}
else
{
while($row = mysql_fetch_object($sql))
{
echo"$row->id";
}
}
?>
Alles was ich sehe wenn ich die Datei aufrufe ist ein weißer Bildschirm...

MFG,
Sven
 
Du projezierst auch nicht id, sondern max(id).
Am besten vergibst Du einen Aliasnamen, wenn Du unbedingt mit mysql_fetch_object auf das Ergebnis zugreifen willst:
PHP:
<?php
mysql_connect("localhost", "Sven", "sven") or die ("mysql_error()");
mysql_select_db("aktuelles") or die ("mysql_error()");

$sql =mysql_query("SELECT max(id) AS maxid FROM news");
if($sql == false)
{
echo"Abfrage fehlgeschlagen";
}
else
{
while($row = mysql_fetch_object($sql))
{
echo $row->maxid;
}
}
?>
Gruß hpvw
 
Danke, jetzt klappt es auch.

hpvw hat gesagt.:
Am besten vergibst Du einen Aliasnamen, wenn Du unbedingt mit mysql_fetch_object auf das Ergebnis zugreifen willst
Hört sich so an als eigne sich mysql_fetch_object() nicht wirklich dazu.
Wie würdest du es denn machen?

MFG,
Sven
 
Ich arbeite immer mit [phpf]mysql_fetch_assoc[/phpf].
Aber es ist eigentlich immer hilfreich, für berechnete Felder Aliasnamen zu vergeben, auch wenn es mit [phpf]mysql_fetch_assoc[/phpf], [phpf]mysql_fetch_row[/phpf] und [phpf]mysql_fetch_array[/phpf] möglich ist, auf die durch die Berechnung entstehenden kryptischen Feldbezeichner bzw. die Feldposition zuzugreifen.

Wenn ich mir überlege, was bei [phpf]mysql_fetch_object[/phpf] passiert, halte ich die Funktion für ... äh ich will nicht beleidigend werden, PHP ist eine tolle Skriptsprache.

Es wird implizit eine Klassendefinition erstellt, die eine Klasse beschreibt, die ausschließlich aus Bezeichnern besteht, die public sind. Es ist also eine reine Datenhaltungsklasse, die keine Funktionalität bietet. Die Entwickler sind mit PHP 5 einen richtigen Schritt in Richtung Objektorientierung gegangen. Diese Funktion kommt jedoch noch aus PHP 3 und entspricht somit noch dem alten Modell, was IMHO außer den Bezeichnungen Klasse und Objekt wenig mit Objektorientierung zu tun.

Gruß hpvw
 
Zurück