Soalan:
Apabila mengambil data daripada jadual MySQL menggunakan mysql_fetch_fetch nilai sedang dikembalikan, menghasilkan output pendua apabila diulang melalui tatasusunan.
Contoh:
<code class="php"><?php $table = get_personel_table(1); function get_personel_table($id) { global $connection; $query = "SELECT * "; $query .= "FROM employees "; $query .= "WHERE id=" . $id . " "; $query .= "ORDER BY id ASC"; $query_result = mysql_query( $query , $connection ); confirm_query($query_result); $query_result_array = mysql_fetch_array($query_result); return $query_result_array; // returns associative array!; } foreach($table as $table_var) { echo "<td>" . $table_var . "</td>"; } // Output: // "1 1 1 1 jordan jordan 9108121544 9108121544 testEmail testEmail testAddress testAddress testCounty testCounty"</code>
Mengapa Ini Berlaku?
Fungsi mysql_fetch_array mengembalikan tatasusunan yang mengandungi kedua-dua indeks bersekutu dan angka secara lalai. Ini bermakna kedua-dua nama lajur dan indeks lajur (0, 1, 2, dsb.) digunakan sebagai kunci.
Penyelesaian:
Untuk mengelakkan nilai pendua , gunakan parameter kedua mysql_fetch_array untuk menentukan jenis pengindeksan yang anda mahukan. Anda boleh memilih antara indeks berangka sahaja, indeks bersekutu sahaja, atau kedua-duanya.
<code class="php">// Numerical indexes only $query_result_array = mysql_fetch_array($query_result, MYSQL_NUM); // Associative indexes only $query_result_array = mysql_fetch_array($query_result, MYSQL_ASSOC); </code>
Sebagai alternatif, anda boleh menggunakan fungsi mysql_fetch_row dan mysql_fetch_assoc untuk mengambil data dengan hanya indeks berangka atau indeks bersekutu.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Nilai Pendua Apabila Menggunakan mysql_fetch_array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!