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

  1. sevY

    sevY Thread Starter

    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
     
    sevY, 20.01.2004
    #1
  2. twjb

    twjb MacUser Mitglied

    Mitglied seit:
    14.10.2003
    Beiträge:
    355
    Zustimmungen:
    8
    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
     
    twjb, 20.01.2004
    #2
  3. sevY

    sevY Thread Starter

    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
     
    sevY, 20.01.2004
    #3
  4. twjb

    twjb MacUser Mitglied

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

    Gruß

    Tobias
     
    twjb, 20.01.2004
    #4
  5. sevY

    sevY Thread Starter

    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
     
    sevY, 20.01.2004
    #5
  6. twjb

    twjb MacUser Mitglied

    Mitglied seit:
    14.10.2003
    Beiträge:
    355
    Zustimmungen:
    8
    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
     
    twjb, 20.01.2004
    #6
  7. sevY

    sevY Thread Starter

    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
     
    sevY, 20.01.2004
    #7
Die Seite wird geladen...
Ähnliche Themen - MySQL Abfrage Primary
  1. xenon96
    Antworten:
    2
    Aufrufe:
    579
    xenon96
    27.06.2015
  2. max@hismac
    Antworten:
    2
    Aufrufe:
    1.609
    pmau
    27.03.2014
  3. max@hismac
    Antworten:
    0
    Aufrufe:
    2.352
    max@hismac
    09.05.2013
  4. max@hismac
    Antworten:
    2
    Aufrufe:
    1.853
    nightcoding
    02.06.2012
  5. bluedisc
    Antworten:
    10
    Aufrufe:
    1.240
    bluedisc
    19.12.2010