Maison >développement back-end >Problème PHP >Comment résoudre le désalignement des données lues à partir de la base de données PHP

Comment résoudre le désalignement des données lues à partir de la base de données PHP

PHPz
PHPzoriginal
2023-03-24 16:11:391400parcourir

PHP est un langage de script côté serveur populaire largement utilisé dans de nombreuses applications Web. Dans ces applications, les données doivent souvent être lues à partir d'une base de données pour restituer un contenu dynamique. Cependant, lors de la lecture d’une grande quantité de données, vous rencontrez parfois le problème du désalignement des données. Dans cet article, nous présenterons le problème des données mal alignées lues à partir de la base de données en PHP et proposerons quelques solutions.

Description du problème

Regardons d'abord un exemple simple. Supposons que nous ayons une table de base de données contenant des informations sur les étudiants, qui contient des champs tels que le nom de l'étudiant, son numéro d'étudiant et sa date de naissance. Nous pouvons utiliser le code PHP suivant pour lire les données de la base de données et les afficher sur la page Web :

<?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);
?>

Ce code a l'air parfait, cependant lorsque nous l'exécutons dans le navigateur, nous trouvons des champs pour le nom et le numéro de l'étudiant. Les données est mal placé.

Pourquoi est-ce ? La raison en est que l'ordre des champs que nous définissons dans la table de la base de données n'est pas cohérent avec l'ordre que nous définissons lors de la lecture des données dans le code. Dans cet exemple, nous définissons d'abord le champ ID étudiant dans la table de la base de données, puis le champ Nom et le champ Date de naissance. Cependant, dans le code PHP, nous lisons les données dans l'ordre du nom, du numéro d'étudiant et de la date de naissance, ce qui entraîne un désalignement des données.

Solution

Il existe plusieurs solutions pour résoudre ce problème :

1 Lire les données dans l'ordre des champs dans la table de la base de données

C'est la solution la plus simple, il vous suffit de lire les données dans la table de la base de données. Code PHP L'ordre peut être ajusté à l'ordre des champs dans la table de la base de données. Par exemple, dans l'exemple ci-dessus, nous pouvons changer le code en :

<?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);
?>

Bien que cette solution soit simple, il est facile de faire des erreurs lorsqu'il y a un grand nombre de champs dans la table.

2. Utilisez des instructions AS pour nommer les champs

La deuxième solution consiste à utiliser des instructions AS pour spécifier un alias pour chaque champ lors de la lecture des données. Par exemple, dans l'exemple ci-dessus, nous pouvons changer le code en :

<?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);
?>

Dans le code, nous renommeons le champ d'identification de l'étudiant en "student_id" à l'aide de l'instruction AS, et le mappons à "student ID" dans la liste du tableau HTML. . De cette façon, nous pouvons faire correspondre correctement les données.

3. Utilisez la méthode matricielle pour lire les données

La troisième solution consiste à utiliser la méthode matricielle pour lire les données, ce qui peut réduire considérablement le risque d'ordre des champs incohérent. Par exemple, dans l'exemple ci-dessus, nous pouvons changer le code en :

<?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);
?>

Dans cet exemple, nous utilisons la fonction mysqli_fetch_array($result, MYSQLI_NUM) pour renvoyer les données lues sous forme de tableau. De cette façon, nous pouvons accéder à la valeur de chaque champ via l'indice du tableau sans nous soucier de son ordre dans la table de la base de données.

Résumé

Le mauvais alignement des données lues dans la base de données par PHP est un problème courant, mais nous pouvons le résoudre de plusieurs manières. La meilleure solution est d'éviter autant que possible ce problème lors de l'écriture de code, par exemple en utilisant des alias ou des tableaux pour lire des données. Si ce problème s'est produit, nous avons plusieurs façons de le résoudre. Il convient de noter que la résolution de ce problème nécessite une vérification minutieuse de la correspondance des données pour garantir que les données s'affichent correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn