dedlfix: Problem beim Auslesen eines maximalen Wertes

Beitrag lesen

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";