1

ここにも非常によく似た質問がありますが、さまざまなことを検索して試した後も、私は立ち往生しています。

を使用mysqli_fetch_assoc()して配列にデータを入力する場合、各行は2回追加されます。

$query = "SELECT column FROM table WHERE year = 2012";
if ($result = mysqli_query($connect, $query)) {
  while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row["column"];
  }
echo implode(',', $data);
mysqli_free_result($result);
}

これは次を返します: 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10

私は期待しています1,2,3,4,5,6,7,8,9,10

デバッグを行うために数行追加しました...

print_r($data)収量

Array ( 
[0] => 1 
[1] => 2 
[2] => 3 
[3] => 4 
[4] => 5 
[5] => 6 
[6] => 7 
[7] => 8 
[8] => 9 
[9] => 10 
[10] => 1 
[11] => 2 
[12] => 3 
[13] => 4 
[14] => 5 
[15] => 6 
[16] => 7 
[17] => 8 
[18] => 9 
[19] => 10 )

print_r($result);収量

mysqli_result Object 
( 
[current_field] => 0 
[field_count] => 1 
[lengths] => 
[num_rows] => 10 
[type] => 0 
)

[num_rows] => 10を使用していて、使用mysqli_fetch_assoc()していない場合mysqli_fetch_array()、なぜ配列に値を2回追加するのですか?

4

1 に答える 1

3

$dataおそらく、すでにいくつかのデータを配列に割り当てています。while指示の前にそれを空にしてみてください:

$query = "SELECT column FROM table WHERE year = 2012";
if ($result = mysqli_query($connect, $query)) {
  $data = array();
  while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row["column"];
  }
echo implode(',', $data);
mysqli_free_result($result);
}

そしてそれが何を出力するかを見てください。

実際の列名ではないと思いcolumnます。そうしないと、エラーが発生します。

于 2013-02-06T20:15:25.620 に答える