MySQL Abfrage | Primary Key != 1, trotzdem erste Row abfragen

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von sevY, 20.01.2004.

  1. sevY

    sevY Thread Starter Gast

    Hi zusammen,

    ich möchte einen Datensatz aus einer Mysql DB mit PHP ziehen.

    Die Abfrage ist:

    PHP:
    $read=mysql_query("select * from $db_contact where ID='$_POST[pkx]'",$handler);
    $ID ist der Primary Key des Table und wir mit der Variablen $pkx, die extern aus einer Navigation an dieses Script übergeben wird, definiert.

    Um beim Aufrufen der Seite direkt den ersten Datensatz bereitzustellen wir onload $pkx='1'; gesetzt und übergeben. Das ist soweit auch korrekt. Nun das Problem. Man kann die Datenbank via Admintool administrieren.

    Wenn nun der Datensatz mit dem Primary Key 1 gelöscht wird, ist $pkx='1'; trivial, da der Primary Key mit auto_increment gezählt wird. Gibt es nun eine Möglichkeit, anstatt numerisch, faktisch ein Statement zu übergeben, das sagt, das der Datensatz mit dem ersten Primary Key geladen werden soll? Also quasi der kleinste Wert des Primary Key?

    Beispiel:


    PHP:
    $read=mysql_query("select * from $db_contact where ID='//ersten Datensatz aus der Datenbank'",$handler);
    Danke und viele Grüße,
    Yves
     
  2. twjb

    twjb MacUser Mitglied

    Beiträge:
    355
    Zustimmungen:
    8
    MacUser seit:
    14.10.2003
    PHP:
    select MIN(IDfrom $db_contact;
    gibt dir den kleinsten Wert der Spalte ID. Den kannst du dann in der WHERE Klausel benutzen.

    Gruß

    Tobias
     
  3. sevY

    sevY Thread Starter Gast

    Hi,

    danke für deine Antwort :)


    Geht doch auch so, oder? Das wäre nämlich am einfachsten, da die Sache aus Flash übergeben/abgefragt wird.


    PHP:
    $read=mysql_query("select * from $db_contact ORDER BY ID asc LIMIT 0,1",$handler);

    Liebe Grüße

    Yves
     
  4. twjb

    twjb MacUser Mitglied

    Beiträge:
    355
    Zustimmungen:
    8
    MacUser seit:
    14.10.2003
    Wieso LIMIT 0, 1? LIMIT 1 gibt dir nur den einen Datensatz aus. (In deinem Fall den mit der kleinsten ID.)

    Gruß

    Tobias
     
  5. sevY

    sevY Thread Starter Gast

    Hi,

    das ist auch so gewollt.

    Es ist für Flash. Die Flashdatei lädt beim Aufruf des Movies den ersten Datensatz in eine Komponente, in die später durch instanzierte Navigationsbuttonkomponente, die die restlichen PK mitbekommen und mit sendAndload(); das loadVars()-Objekt definieren, die entsprechenden Inhalte geladen werden. Es wäre also unnötig, alle Datensätze bereitzustellen wenn ich nur den ersten brauche. Hatte ich aber in diesem Kontext nicht erwähnt, sorry ;)

    Auf jedenfall ist mein Problem nun gelöst.

    Dankeschön :)

    Yves
     
  6. twjb

    twjb MacUser Mitglied

    Beiträge:
    355
    Zustimmungen:
    8
    MacUser seit:
    14.10.2003
    Nene. Das hab ich schon verstanden. Ich hab mich nur gefragt, warum du LIMIT 0,1 (das 0, ist doch überflüssig, oder?) statt LIMIT 1 schreibst, wenn du nur einen Datensatz haben willst.

    Gruß
    Tobias
     
  7. sevY

    sevY Thread Starter Gast

    Hi,

    die 0 ist nicht überflüssig.

    „LIMIT 0,1: 0 ist die Position, 1 die Anzahl Datensätze“


    LIMIT 3,5 würde bedeutet, das ab der 3. Row nun 5 Rows (4. Row bis 8. Row) ausgeben werden.

    Hier die 0 zu notieren ist einfach sauberer, müsste auch ohne funktionieren.

    Yves
     
Die Seite wird geladen...

Diese Seite empfehlen