sql >> Databasteknik >  >> RDS >> Mysql

Skapa flera tabeller genom att gå igenom en fråga

Först och främst bör du inte använda mysql_-funktionerna, de är utfasade. Åtminstone bör du byta till mysqli_ (en ganska enkel växling), eller bättre, lär dig hur du använder PDO . Det är lite annorlunda och mer involverat att byta, men din kod blir bättre och säkrare för det.

Med det ur vägen:din logik är ganska korrekt. Begränsa dina resultat till de fem bästa resultaten för varje kurs i en fråga är inte något som jag vet lätt att göra med SQL, så din plan är bra:fråga en lista med kurser, bläddra sedan igenom dem med din befintliga fråga, kör den en gång för varje kurs, med en LIMIT 5 för att få topp 5.

Du kan lika gärna behålla bordsgenereringen inom denna loop också, eftersom det är ett bord per kurs. Du skulle vilja flytta VehName-frågan ur slingan, eftersom du bara behöver köra den en gång.

Dessutom några oönskade PHP-råd:all text utanför taggarna kommer bara att matas ut direkt, så dra nytta av dess inbyggda mall och alternativ syntax för att göra din tabellgenereringskod snyggare:

<?php
   /* Gather your data here... */
?>
<table>
  <tr><th>Best Scores for <?php echo $vehName['Veh_name'] ?></th></tr>
</table>
<table border='1'>
  <tr>
    <th>Course</th>
    <th>Score</th>
    <th>Distance</th>
    <th>Player</th>
    <th>Time</th>
  </tr>
  <?php while($row = mysql_fetch_array($result_HiScores)): ?>
  <tr>  
    <td><?php echo $row['course'] ?></td>
    <td><?php echo $row['score'] ?></td>";
    <td><?php echo $row['distance'] ?></td>";
    <td><?php echo $row['User'] ?></td>";
  </tr>
  <?php endwhile; ?>
</table>


  1. Hämtar senast infogade ROWID i PHP/OCI

  2. MySQL - Kombinera flera WHEN-villkor i CASE

  3. Hur matchar man inte null + inte tomt?

  4. Hur förbereder man uttalande för uppdateringsfråga?