質問:
mysql_fetch_array を使用して MySQL テーブルからデータをフェッチする場合、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 の 2 番目のパラメータを使用して、必要なインデックス作成のタイプを指定します。数値インデックスのみ、連想インデックスのみ、またはその両方を選択できます。
<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 中国語 Web サイトの他の関連記事を参照してください。