Heim  >  Artikel  >  Backend-Entwicklung  >  So beheben Sie die Fehlausrichtung der aus der PHP-Datenbank gelesenen Daten

So beheben Sie die Fehlausrichtung der aus der PHP-Datenbank gelesenen Daten

PHPz
PHPzOriginal
2023-03-24 16:11:391347Durchsuche

PHP ist eine beliebte serverseitige Skriptsprache, die in vielen Webanwendungen weit verbreitet ist. In diesen Anwendungen müssen häufig Daten aus einer Datenbank gelesen werden, um dynamische Inhalte darzustellen. Beim Lesen einer großen Datenmenge tritt jedoch manchmal das Problem einer Datenfehlausrichtung auf. In diesem Artikel stellen wir das Problem falsch ausgerichteter aus der Datenbank in PHP gelesener Daten vor und bieten einige Lösungen an.

Problembeschreibung

Schauen wir uns zunächst ein einfaches Beispiel an. Angenommen, wir haben eine Datenbanktabelle mit Studenteninformationen, die Felder wie Studentenname, Studentennummer und Geburtsdatum enthält. Wir können den folgenden PHP-Code verwenden, um die Daten aus der Datenbank zu lesen und auf der Webseite anzuzeigen:

<?php
$conn = mysqli_connect("localhost", "root", "", "test");
$sql = "SELECT * FROM student";
$result = mysqli_query($conn, $sql);
?>

<table>
  <tr>
    <th>姓名</th>
    <th>学号</th>
    <th>出生日期</th>
  </tr>
  <?php while($row = mysqli_fetch_assoc($result)) { ?>
  <tr>
    <td><?php echo $row[&#39;name&#39;]; ?></td>
    <td><?php echo $row[&#39;id&#39;]; ?></td>
    <td><?php echo $row[&#39;dob&#39;]; ?></td>
  </tr>
  <?php } ?>
</table>

<?php
mysqli_close($conn);
?>

Dieser Code sieht perfekt aus, aber wenn wir ihn im Browser ausführen, finden wir Felder für Studentennamen und Studentennummer. Die Daten ist fehl am Platz.

Warum ist das so? Der Grund dafür ist, dass die Reihenfolge der Felder, die wir in der Datenbanktabelle definieren, nicht mit der Reihenfolge übereinstimmt, die wir beim Lesen der Daten im Code definieren. In diesem Beispiel definieren wir zunächst das Feld „Studentenausweis“ in der Datenbanktabelle, dann das Feld „Name“ und das Feld „Geburtsdatum“. Im PHP-Code lesen wir die Daten jedoch in der Reihenfolge Name, Schülernummer und Geburtsdatum, was zu einer Fehlausrichtung der Daten führt.

Lösung

Es gibt mehrere Lösungen, um dieses Problem zu lösen:

1. Lesen Sie die Daten in der Reihenfolge der Felder in der Datenbanktabelle

Dies ist die einfachste Lösung, Sie müssen nur die Daten in der lesen PHP-Code Die Reihenfolge kann an die Reihenfolge der Felder in der Datenbanktabelle angepasst werden. Im obigen Beispiel können wir den Code beispielsweise wie folgt ändern:

<?php
$conn = mysqli_connect("localhost", "root", "", "test");
$sql = "SELECT id, name, dob FROM student";
$result = mysqli_query($conn, $sql);
?>

<table>
  <tr>
    <th>学号</th>
    <th>姓名</th>
    <th>出生日期</th>
  </tr>
  <?php while($row = mysqli_fetch_assoc($result)) { ?>
  <tr>
    <td><?php echo $row[&#39;id&#39;]; ?></td>
    <td><?php echo $row[&#39;name&#39;]; ?></td>
    <td><?php echo $row[&#39;dob&#39;]; ?></td>
  </tr>
  <?php } ?>
</table>

<?php
mysqli_close($conn);
?>

Obwohl diese Lösung einfach ist, kann es leicht zu Fehlern kommen, wenn die Tabelle eine große Anzahl von Feldern enthält.

2. Verwenden Sie AS-Anweisungen, um Felder zu benennen.

Die zweite Lösung besteht darin, AS-Anweisungen zu verwenden, um beim Lesen von Daten einen Alias ​​für jedes Feld anzugeben. Im obigen Beispiel können wir den Code beispielsweise wie folgt ändern:

<?php
$conn = mysqli_connect("localhost", "root", "", "test");
$sql = "SELECT name, id AS student_id, dob FROM student";
$result = mysqli_query($conn, $sql);
?>

<table>
  <tr>
    <th>姓名</th>
    <th>学号</th>
    <th>出生日期</th>
  </tr>
  <?php while($row = mysqli_fetch_assoc($result)) { ?>
  <tr>
    <td><?php echo $row[&#39;name&#39;]; ?></td>
    <td><?php echo $row[&#39;student_id&#39;]; ?></td>
    <td><?php echo $row[&#39;dob&#39;]; ?></td>
  </tr>
  <?php } ?>
</table>

<?php
mysqli_close($conn);
?>

Im Code benennen wir das Studenten-ID-Feld mithilfe der AS-Anweisung in „student_id“ um und ordnen es „student ID“ in der HTML-Tabellenliste zu . Auf diese Weise können wir dafür sorgen, dass die Daten korrekt übereinstimmen.

3. Verwenden Sie die Array-Methode zum Lesen von Daten

Die dritte Lösung besteht darin, die Array-Methode zum Lesen von Daten zu verwenden, wodurch das Risiko einer inkonsistenten Feldreihenfolge erheblich verringert werden kann. Im obigen Beispiel können wir den Code beispielsweise wie folgt ändern:

<?php
$conn = mysqli_connect("localhost", "root", "", "test");
$sql = "SELECT * FROM student";
$result = mysqli_query($conn, $sql);
?>

<table>
  <tr>
    <th>姓名</th>
    <th>学号</th>
    <th>出生日期</th>
  </tr>
  <?php while($row = mysqli_fetch_array($result, MYSQLI_NUM)) { ?>
  <tr>
    <td><?php echo $row[1]; ?></td>
    <td><?php echo $row[0]; ?></td>
    <td><?php echo $row[2]; ?></td>
  </tr>
  <?php } ?>
</table>

<?php
mysqli_close($conn);
?>

In diesem Beispiel verwenden wir die Funktion mysqli_fetch_array($result, MYSQLI_NUM), um die gelesenen Daten als Array zurückzugeben. Auf diese Weise können wir über den Array-Index auf den Wert jedes Felds zugreifen, ohne uns um seine Reihenfolge in der Datenbanktabelle zu kümmern.

Zusammenfassung

Fehlausrichtung der von PHP aus der Datenbank gelesenen Daten ist ein häufiges Problem, aber wir können es auf viele Arten lösen. Die beste Lösung besteht darin, dieses Problem beim Schreiben von Code so weit wie möglich zu vermeiden, z. B. durch die Verwendung von Aliasen oder Arrays zum Lesen von Daten. Wenn dieses Problem aufgetreten ist, haben wir mehrere Möglichkeiten, es zu beheben. Es ist zu beachten, dass die Lösung dieses Problems eine sorgfältige Prüfung der Datenkorrespondenz erfordert, um sicherzustellen, dass die Daten korrekt angezeigt werden.

Das obige ist der detaillierte Inhalt vonSo beheben Sie die Fehlausrichtung der aus der PHP-Datenbank gelesenen Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn