0

mysql_fetch_array / mysql_fetch_row の結果を使用して、各行レコードが csv で次のレコードが新しい行にある csv ファイルを作成するにはどうすればよいですか。

私はこれを試しました:

$query = "SELECT * FROM myTable DESC LIMIT 10";

$result = mysql_query($query, $conn);
$resultRows = mysql_num_rows($result);

if($resultRows < 1) {
    return array('query' => $query, 'NumberOfRows' => $resultRows, 'status' => 'failure');
};

$rowResult = mysql_fetch_array($result);
//var_dump($rowResult);exit;
foreach($rowResult as $row){

    $resultSet = $row['firstname'];
    $resultSet .= ',' . $row['lastname'];
    $resultSet .= ',' . $row['email'];
    $resultSet .= ',' . $row['phone'];
    $resultSet .= ',' . ($row['address1']);
    $resultSet .= '\n';
    //var_dump($resultSet);exit;
}
4

3 に答える 3

2

改行文字は二重引用符で囲む必要があると思います。

$resultSet .= "\n";

おそらく長さの理由でコードから省略されているだけですが、foreach の後に $resultSet をエコーし​​ていることを確認してください。

于 2012-07-25T22:47:04.093 に答える
1

ファイルを CSV としてダウンロードする場合は、次のヘッダーを含めます。

header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=extraction.csv");
header("Pragma: no-cache");
header("Expires: 0");

次に、csv セクションでは、次のようなものを使用します。

echo "FirstName,LastName,Email,Phone,Address\r\n"; //header
while($row = mysql_fetch_array($result)){
  echo "\"$row[firstname]\",\"$row[lastname]\",\"$row[email]\",\"$row[phone]\",\"$row[address]\"\r\n";
} 

ただし、ファイルを作成したいだけの場合は、次のようなものを使用します。

$fp = fopen('file.csv', 'w');

while($row = mysql_fetch_array($result)){
   fputcsv($fp, $row);
}

fclose($fp);
于 2012-07-25T22:55:40.337 に答える
0

ここに良いリソースがあります: http://www.codehive.net/PHP-Array-to-CSV-1.html

使用法:

$csv_data = array_to_scv($array, false);
print_r($csv_data);
于 2012-07-25T22:56:03.730 に答える