2016-06-10 3 views
0

kein Duplikat Select specific value from a fetched arrayErste genaue Wert von geholt Array von MySql

ich eine MySQL-Datenbank haben, wie: enter image description here

Hier ist meine Frage:

$sql = "SELECT * FROM data ORDER BY Score DESC"; 

ich es will ein sein Rangliste, die Leute ihre Ergebnisse aktualisieren können, so kann ich nicht verwenden

$sql = "SELECT * FROM data ORDER BY Score DESC WHERE ID = 1"; 

Ich möchte Benutzername der zweiten Reihe bekommen in meinem query.So schrieb ich:

<?php 
include "l_connection.php"; 
$sql = "SELECT * FROM data ORDER BY Score"; 
$result = mysqli_query($conn, $sql); 
if($result->num_rows>0){ 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 

} 
echo "Result = '".$row[1]['Username']."''"; 
} 

?> 

Aber es gibt Ergebnis = ‚‘ wie es nichts in der Anordnung.

Aber wenn ich

if($result->num_rows>0){ 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo "Name = '".$row['Username']."''"; 
} 
} 

schreiben Es wird zurück: Parham, Mojtaba, Gomnam, Masoud, Also, was soll ich in der ersten Schnipsel falsch?

Antwort

1

Sie können nicht außerhalb der While-Schleife auf $row zugreifen.

So speichere das Ergebnis in ein neues Array, und dann können Sie das neue Array außerhalb der while-Schleife zuzugreifen:

$newResult = array(); 
if($result->num_rows>0){ 
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
     $newResult[] = $row; 
    } 
} 

echo "Result = '".$newResult[1]['Username']."''"; // thus you can access second name from array 
1

Weil Sie, wo Zustand nach ORDER um

$sql = "SELECT * FROM data ORDER BY Score DESC WHERE ID = 1"; 

Die Sequenz schreiben der Abfrage ist

SELECT * FROM data // select first 
WHERE ID = 1 
ORDER BY Score DESC// Order by at last 

prüfen http://dev.mysql.com/doc/refman/5.7/en/select.html

Und für die zweiten Fall müssen Sie Username innerhalb while-Schleife holen und verwenden $row['Username'] statt $row[1]['Username']

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo "Result = '".$row['Username']."''";// write inside while loop 
} 
0

Sie können Zeilenwert in jedem Array zuweisen und das Array verwenden.

<?php 
    include "l_connection.php"; 
    $sql = "SELECT * FROM data ORDER BY Score"; 
    $result = mysqli_query($conn, $sql); 
    if($result->num_rows>0){ 
     $rows = array(); 
     while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
      $rows[] = $row; 
     } 
     echo "Result = '".$rows[1]['Username']."'"; 
    } 

?> 

Oder wenn Sie nur zweithöchste Punktzahl von Spalte können Sie Benutzerlimit als

$sql = "SELECT * FROM data ORDER BY Score limit 1,1";