2

私はこの fputcsv コードを使用しています:

$result = mysql_query('SELECT * FROM `mash`');
if (!$result) die('Couldn\'t fetch records');
$fp = fopen('testCSV.csv', 'w');
if ($fp && $result) {
    while ($row = mysql_fetch_array($result)) {
        fputcsv($fp, array_values($row));
    }
    die;
}
fclose($fp);

それは素晴らしいCSVを出力しますが、各mysql列には2つの列があります(したがって、すべてが2倍になります)

それがなぜなのか誰にもわかりますか?

4

3 に答える 3

7

これを試して:

$result = mysql_query('SELECT * FROM `mash`');
if (!$result) die('Couldn\'t fetch records');
$fp = fopen('testCSV.csv', 'w');
if ($fp && $result) {
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        fputcsv($fp, array_values($row));
    }
    die;
}
fclose($fp);

mysql_fetch_array はデフォルトで結合配列を返しますが、これは連想配列のみを返します。または番号付きの MYSQL_NUM を使用します - http://php.net/manual/en/function.mysql-fetch-array.php

于 2011-02-14T15:36:38.493 に答える
1

http://php.net/manual/en/function.mysql-fetch-array.php

mysql_fetch_array の 2 番目のパラメーターがここでのキーです。デフォルトでは、関連する int キーの両方を取得します。おそらく、ここで MYSQL_ASSOC を渡したいでしょう。

于 2011-02-14T15:35:44.330 に答える
0

mysql_fetch_array() デフォルトでは、数値インデックスと連想インデックスの両方を返します。

マニュアルの引用(強調鉱山):

フェッチされた行に対応する文字列の配列を返します。それ以上行がない場合は FALSE を返します。返される配列の型は、result_type の定義方法によって異なります。MYSQL_BOTH (デフォルト) を使用すると、連想インデックスと数値インデックスの両方を持つ配列が得られます。MYSQL_ASSOC を使用すると、連想インデックスのみが取得され (mysql_fetch_assoc() が機能するため)、MYSQL_NUM を使用すると、数値インデックスのみが取得されます (mysql_fetch_row() が機能するため)。

解決:

于 2011-02-14T15:35:15.737 に答える