問題:
使用mysql_fSQL double傳回值,導致迭代數組時出現重複輸出。
例如:
<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>
為什麼會發生這種情況?
mysql_fetch_array 函數預設傳回一個包含關聯索引和數字索引的陣列。這意味著列名和列索引(0、1、2等)都用作鍵。
解決方案:
防止重複值,使用 mysql_fetch_array 的第二個參數來指定您想要哪種類型的索引。您可以選擇僅數字索引、僅關聯索引或兩者。
<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>
或者,您可以使用 mysql_fetch_row 和 mysql_fetch_assoc 函數分別取得僅包含數字索引或關聯索引的資料。
<code class="php">// Numerical indexes only $query_result_array = mysql_fetch_row($query_result); // Associative indexes only $query_result_array = mysql_fetch_assoc($query_result); </code>
以上是為什麼使用 mysql_fetch_array 時會得到重複的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!