Syntax-fehler in MySQL

Karlzberg

Erfahrenes Mitglied
Hallo,

ich versuche mir einen Sortierungsschlüssel selbst zu erstellen. Dazu soll aus einer Spalte einer Tabelle in der DB der letzte Wert ausgelesen und ausgegeben werden, um ihn dann später in mehrere Zeilen -um 1 erhöht- wiedereinzutragen.
Ist in der betreffenden Spalte (trnr) kein Wert enthalten, soll 1 als Wert gesetzt werden, da ich das ganze auf eine leere Tabelle anwenden möchte.

Mein Code hierzu sieht wie folgt aus:

PHP:
//ermittlung der turniernummer
$ltrnrsql = mysql_query(
                      "SELECT 
                             trnr 
                      FROM 
                             tabellenname 
                      ORDER BY 
                             id 
                      DESC LIMIT 1"
                      ); //letzten Eintrag auswählen 
$ltrnr =  mysql_query($ltrnrsql) OR die(mysql_error());
if(mysql_num_rows($ltnr)) // gucken ob was im Query drinsteckt
//wenn ja, dann nimm das ergebnis und rechne 1 dazu
            { 
             $trnr = mysql_fetch_assoc($ltnr) + 1;
             echo "Turniernummer: ".$trnr ; //zur kontrolle  
            } 
//wenn nein, dann setze die turniernummer auf 1            
else        {
             $trnr = 1;
             echo "Turniernummer: ".$trnr; //zur kontrolle
            }

Das Ganze gibt mir dann folgenden Fehler aus:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #3' at line 1

Was hab ich also falsch gemacht? Liegt mein Problem evtl. darin, dass die Tabelle noch komplett leer ist, folglich in id -nach der er ja sortieren soll- nichts drin steht?
Wenn ja, wie kann ich das dann umgehen?
Zusatzfrage:
Gibt er mir mit DESC oder mit ASC den letzten Wert einer Spalte aus?
 
Was hab ich also falsch gemacht?

Ich würde sagen, du hast zu wenig geschlafen :-) :-(

$ltrnrsql ist bereits ein Query :
Code:
$ltrnrsql = mysql_query(...); 
$ltrnr =  mysql_query($ltrnrsql)//<-Du versuchst einen weiteren Query anhand des Rückgabewertes von $ltrnrsql

schreibs so:
Code:
$ltrnrsql =  "SELECT 
                             trnr 
                      FROM 
                             tabellenname 
                      ORDER BY 
                             id 
                      DESC LIMIT 1";
...und alles ist in Butter, den das Statement ansich haut hin, worauf sich anhand der Fehlermeldung schliessen lässt(Resource id #3 ist das Ergebnis des 1. Query...jenes war somit erfolgreich)

Allerdings kannst du nicht direkt mit dem Ergebnis rechnen, wie du es versuchst....mysql_fetch_assoc() gibt einen Array zurück.
Stattdessen kannst du es bspw. so machen:
Code:
$trnr=mysql_result($ltrnr,0,0)+1;


Zu dem anderen:
mit DESC sortierst du absteigend, da du dir nur 1 Datensatz ausgeben lässt, liefert dir das folglich den ersten Datensatz der Ergebnismenge, somit denjenigen, bei dem das Feld id den höchsten Wert hat.
 
Zurück