Highscore Anzeige PHP über mySCL connector

  • Hi.

    Ich habe folgendes PHP Script geschrieben um auf meine Homepage über mySQL Highscores zu empfangen. Das funktioniert auch soweit ganz gut.

    Nur möchte ich gerne die Ausgabe auf max 10 Einträge beschränken. Dafür würde sich ja DESC LIMIT 10 anbieten. Aber sobald ich das einfüge funktioniert mein Script nicht mehr. Was mache ich falsch?




    <?php

    $conn = new mysqli('localhost', 'root', 'test', 'test');

    if($conn->connect_error){

    die("Error in DB connection: ".$conn->connect_errno." : ".$conn->connect_error);

    }


    $field = $_GET['sort'];

    if($field == ''){

    $field = 'score';

    }


    $ordertype = ($_GET['order'] == 'desc')? 'asc' : 'desc';


    $select = "SELECT * FROM `players` ORDER BY $field $ordertype" DESC

    LIMIT 10 ;

    $result = $conn->query($select);

    if($result->num_rows > 0){

    echo '<table class="tbl-content" >';

    echo '<tr>';


    echo '</a></th>';

    echo '<th>Username ';


    echo '</a></th>';


    echo '<th>Score</th>';



    echo '</a></th>';

    echo '</tr>';

    while($row = $result->fetch_object()){

    echo '<tr>';


    echo '<td>'.$row->username.'</td>';


    echo '<td>'.$row->score.'</td>';

    echo '</tr>';

    }

    echo '</table>';

    }

    ?>

  • Das HTML ist auch irgendwie falsch.

    Auch wenn mein Browser das laut Konsole richtig angezeigt, kommt der Quelltext aber falsch an.

    Das solltest du auch noch beheben

    zb so

    Bei viel echos, kannst du auch erst sammeln ( so nenne ich das )

  • Bitte nicht direkt in SQL-Abfragen Variabeln einbauen. Das ist ein Sicherheitsrisiko und man kann dadurch z.B. die komplette Datenbank mit 'score ASC; DROP TABLE "players";' als GET Variable "sort" löschen. Stattdessen immer PDO und prepared statements verwenden, da kann das nicht passieren.