10 Stimmen

Wie erhalte ich die erste Zeile der mysql-Ressourcenzeichenfolge?

Hier ist mein Problem. Ich brauche mehr als eine Zeile aus der Datenbank, und ich brauche die erste Zeile für bestimmte Aufgabe und dann durch alle die Liste wieder gehen, um einen Datensatz zu erstellen.

$query = "SELECT * FROM mytable";
$result = mysql_query($query);

$firstrow = //extract first row from database
//add display some field from it

while($row = mysql_fetch_assoc($result)) {
   //display all of them
}

Wie kann man nun nur die erste Zeile extrahieren?

15voto

David Powers Punkte 1614

Mit mysql_fetch_assoc() wird nicht nur eine Zeile geholt, sondern auch der interne Zeiger der Ergebnismenge auf die nächste Zeile verschoben. Um die Ergebnisressource auf die erste Zeile zurückzusetzen, müssen Sie mysql_data_seek() benutzen.

$query = "SELECT * FROM mytable";
$result = mysql_query($query);

$firstrow = mysql_fetch_assoc($result);

// reset the result resource
mysql_data_seek($result, 0);

while($row = mysql_fetch_assoc($result)) {
   //display all of them
}

1voto

Jedes Mal, wenn Sie anrufen mysql_fetch_assoc($result) erhalten Sie eine Reihe. Anstatt es also wiederholt in einer Schleife zu tun, tun Sie es nur einmal:

$result = mysql_query("...");
if ($row = mysql_fetch_assoc($result)) {
   $firstRow = $row;

   while ($row = mysql_fetch_assoc($result)) {
       // all the rest
   }
}

Haftungsausschluss: Der Code könnte hübscher sein, aber Sie verstehen die Idee!

1voto

Anush Prem Punkte 1521

Wenn Sie alle Zeilen aus der ersten Zeile wiederherstellen wollen, versuchen Sie Folgendes

$query = "SELECT * FROM mytable";
$result = mysql_query($query);

if ( $row = mysql_fetch_assoc ($result){
    $firstRow = $row;
    mysql_data_seek($result, 0);

    while($row = mysql_fetch_assoc($result)) {
       //display all of them
    }
}

Mehr über mysql_data_seek hier: PHP: mysql_data_seek - Manuell

1voto

Anouar khaldi Punkte 745

Können Sie Objektorientierter Stil :

$query = "SELECT * FROM mytable";
$result = mysql_query($query);

if ( $row = $result->fetch_assoc()){
    $firstRow = $row;
    mysql_data_seek($result, 0);

    while( $row = $result->fetch_assoc()) {
       //display all of them
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X