Problem beim Auslesen eines maximalen Wertes
agnes
- datenbank
Hi,
ich lerne gerade mysql und php. Im Moment versuche ich aus einer Tabelle die maximale ID herauszufiltern.
Der Code, mit dem ich das versucht habe:
$result=mysql_query("SELECT MAX(ID) FROM JPL WHERE BRID='" . $_SESSION['BRID'] . "' AND MandantenID='" . $_SESSION['mid'] . "'") OR die(mysql_error());
$row = mysql_fetch_object($result);
echo $row;
Aber ich bekomme die Meldung: Notice: Undefined property: ID in XXX
Kann mir da jemand weiterhelfen?? Ich weiß nicht mehr weiter!
Danke
Agnes
Hello,
$result=mysql_query("SELECT MAX(ID) FROM JPL WHERE BRID='" . $_SESSION['BRID'] . "' AND MandantenID='" . $_SESSION['mid'] . "'") OR die(mysql_error());
Aber ich bekomme die Meldung: Notice: Undefined property: ID in XXX
sieht nach einer PHP-Meldung aus, die sich u.U. auf MAX(ID) bezieht. Voraussetzung dafür wäre allerdings, dass du irgendwo vorher einen Fehler mit Anführungszeichen, Klammern, Semikolon o.ä. gemacht hast. MySQL würde sich anders beschweren...
Benutzt du einen Editor mit Syntax-Highlighting?
MfG
Rouven
echo $begrüßung;
ich lerne gerade mysql und php. Im Moment versuche ich aus einer Tabelle die maximale ID herauszufiltern.
Das ist meist entweder unnötig oder berücksichtigt nicht, dass durch parallel laufende Vorgänge bereits eine größere ID erzeugt worden sein kann, als man erwartet. Wenn du die auto_increment-ierte ID des gerade eingefügten Datensatzes haben möchtest, dann verwende die MySQL-Funktion LAST_INSERT_ID() oder unter PHP mysql_insert_id(). Beide Funktionen müssen noch in der gleichen Verbindung aufgerufen werden, in der das INSERT stattfand.
Wenn du wirklich die größte ID brauchst, begründe das bitte. Vielleicht können wir™ dich noch von diesem vermutlichen Irrweg abbringen.
$result=mysql_query("SELECT MAX(ID) FROM JPL WHERE BRID='" . $_SESSION['BRID'] . "' AND MandantenID='" . $_SESSION['mid'] . "'") OR die(mysql_error());
$row = mysql_fetch_object($result);
echo $row;Aber ich bekomme die Meldung: Notice: Undefined property: ID in XXX
Das ist eine PHP-Fehlermeldung und sie passt nicht zu dem von dir gezeigten Code. Um zu kontrollieren, was in einer komplexen Variablen (Arrays und Objekte) wie $row enthalten ist, reicht kein einfaches echo, da braucht es print_r() oder var_dump(), und am besten ein <pre> vorher, damit die Ausgabe übersichtlicher wird.
echo "$verabschiedung $name";
Hi,
ich muss doch noch einmal nachfragen:
das ist der Code, mit dem ich gestern schon nicht zurecht kam:
$result=mysql_query("SELECT MAX(ID) FROM JPL WHERE BRID='" . $_SESSION['BRID'] . "' AND MandantenID='" . $_SESSION['mid'] . "' ORDER BY ID ASC") OR die(mysql_error());
$row = mysql_fetch_object($result);
print_r($row);
$r[] = $row;
print_r($r);
Ich glaube, ich hab ein Problem mit den arrays: ich hab keinen Schimmer, wie ich nun an den Wert herankomme, der in $row oder in $r steckt. Probiert hab ichs mit
if ($r[0]=='1226')
{
echo "ja <br />";
}
Aber das geht wohl nicht so. Also habe ich im Forum danach gesucht, habe viel gelernt über arrays, aber ich komme trotzdem nicht weiter. Wie komme ich an den Wert, damit ich nachher damit rechen kann? HILFE!!!!
Liebe Grüße
Agnes
echo $begrüßung;
das ist der Code, mit dem ich gestern schon nicht zurecht kam:
$result=mysql_query("SELECT MAX(ID) FROM JPL WHERE BRID='" . $_SESSION['BRID'] . "' AND MandantenID='" . $_SESSION['mid'] . "' ORDER BY ID ASC") OR die(mysql_error());
$row = mysql_fetch_object($result);
Damit bekommst du ein Objekt, kein Array. mysql_fetch_assoc() ergibt das gleiche Ergebnis, aber als Array. Es gibt noch mysql_fetch_array(), aber das braucht/will man nicht, weil das nicht nur die Feldnamen als Schlüssel anlegt, sondern auch noch je ein Element mit der Spaltennummer als Schlüssel.
print_r($row);
Ich glaube, ich hab ein Problem mit den arrays: ich hab keinen Schimmer, wie ich nun an den Wert herankomme, der in $row oder in $r steckt. Probiert hab ichs mit
Deine eine Ergebnisspalte ist ein Ausdruck, dem du keinen Alias-Namen gegeben hast. Die Spalte wird dann nach dem Ausdruck benannt.
Die Kontrollausgabe ergibt so etwas:
stdClass Object (
[MAX(ID)] => zahl
)
Nur ist $row->MAX(ID) nicht die passende PHP-Syntax, um an den Wert zu kommen[*]. Du müsstest deine Abfrage um einen Aliasnamen für das Feld erweitern
SELECT MAX(ID) AS maximalwert FROM ...
Somit kannst du dann auf
$row->maximalwert
zugreifen.
Wenn du auf mysql_fetch_assoc() umstellst, geht es auch ohne Alias:
$row['MAX(ID)']
Aber mit einem Alias sieht das nicht ganz so komisch aus:
$row['maximalwert']
Was aber bleibt ist die Frage, warum du den Maximalwert einer ID haben möchtest. Eine ID dient allein zum Identifizieren eines Datensatzes. Du könntest dafür auch eine DSN-Sequenz nehmen statt einer Zahl. Der maximale Wert in einer ID-Spalte darf keine Bedeutung haben, sonst begehst du einen Fehler. Deswegen wiederhole ich noch mal die Frage, wozu du den Maximalwert zu benötigen glaubst.
[*] Es gäbe die Möglichkeit über variable Variablen. Es ist aber übersichtlicher, den Weg mit dem Alias zu gehen.
echo "$verabschiedung $name";