Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan salah jajaran data yang dibaca daripada pangkalan data PHP

Bagaimana untuk menyelesaikan salah jajaran data yang dibaca daripada pangkalan data PHP

PHPz
PHPzasal
2023-03-24 16:11:391348semak imbas

PHP ialah bahasa skrip sebelah pelayan yang popular yang digunakan secara meluas dalam banyak aplikasi web. Dalam aplikasi ini, data selalunya perlu dibaca daripada pangkalan data untuk menghasilkan kandungan dinamik. Walau bagaimanapun, apabila membaca sejumlah besar data, kadangkala anda menghadapi masalah salah jajaran data. Dalam artikel ini, kami akan memperkenalkan masalah data tidak sejajar yang dibaca daripada pangkalan data dalam PHP dan menyediakan beberapa penyelesaian.

Huraian Masalah

Mari kita lihat contoh mudah dahulu. Katakan kita mempunyai jadual pangkalan data dengan maklumat pelajar, yang mengandungi medan seperti nama pelajar, nombor pelajar dan tarikh lahir. Kita boleh menggunakan kod PHP berikut untuk membaca data daripada pangkalan data dan memaparkannya pada halaman 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);
?>

Kod ini kelihatan sempurna, namun apabila kita menjalankannya dalam penyemak imbas, kita dapati bahawa Data dalam nama pelajar dan medan ID pelajar salah letak.

Kenapa ni? Sebabnya ialah susunan medan yang kami takrifkan dalam jadual pangkalan data adalah tidak konsisten dengan susunan yang kami takrifkan semasa membaca data dalam kod. Dalam contoh ini, kami mula-mula mentakrifkan medan ID pelajar dalam jadual pangkalan data, kemudian medan nama dan medan tarikh lahir. Walau bagaimanapun, dalam kod PHP, kami membaca data dalam susunan nama, nombor pelajar dan tarikh lahir, mengakibatkan salah jajaran data.

Penyelesaian

Terdapat beberapa penyelesaian untuk menyelesaikan masalah ini:

1 Baca data dalam susunan medan dalam jadual pangkalan data

Ini adalah penyelesaian paling mudah, cuma laraskan susunan bacaan data dalam kod PHP kepada susunan medan dalam jadual pangkalan data. Sebagai contoh, dalam contoh di atas, kita boleh menukar kod kepada:

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

Walaupun penyelesaian ini mudah, ia adalah mudah untuk membuat kesilapan apabila terdapat sejumlah besar medan dalam jadual.

2. Gunakan pernyataan AS untuk menamakan medan

Penyelesaian kedua ialah menggunakan pernyataan AS untuk menentukan alias bagi setiap medan semasa membaca data. Sebagai contoh, dalam contoh di atas, kita boleh menukar kod kepada:

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

Dalam kod tersebut, kami menamakan semula medan nombor pelajar kepada "student_id" menggunakan pernyataan AS dan menambahnya dalam jadual HTML Peta ke lajur "ID Pelajar". Dengan cara ini kita boleh membuat data sepadan dengan betul.

3. Gunakan mod tatasusunan untuk membaca data

Penyelesaian ketiga ialah menggunakan mod tatasusunan untuk membaca data, yang boleh mengurangkan risiko susunan medan yang tidak konsisten. Sebagai contoh, dalam contoh di atas, kita boleh menukar kod kepada:

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

Dalam contoh ini, kita menggunakan fungsi mysqli_fetch_array($result, MYSQLI_NUM) untuk mengembalikan data yang dibaca sebagai tatasusunan. Dengan cara ini, kita boleh mengakses nilai setiap medan melalui subskrip tatasusunan tanpa mengambil berat tentang susunannya dalam jadual pangkalan data.

Ringkasan

Dislokasi data yang dibaca daripada pangkalan data oleh PHP adalah masalah biasa, tetapi kita boleh menyelesaikannya dalam pelbagai cara. Penyelesaian terbaik adalah untuk mengelakkan masalah ini sebanyak mungkin semasa menulis kod, seperti menggunakan alias atau tatasusunan untuk membaca data. Jika masalah ini telah berlaku, kami mempunyai beberapa cara untuk menyelesaikannya. Perlu diingatkan bahawa menyelesaikan masalah ini memerlukan pemeriksaan yang teliti terhadap surat-menyurat data untuk memastikan bahawa data dipaparkan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan salah jajaran data yang dibaca daripada pangkalan data PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn