1

関数stackoverflow内の重複値の問題にリンクされている問題に関するすべてのトピックを読みました。fputcsv残念ながら、私は and を使用PDOしていますpsql(提示されたソリューションは、単純なmysqlコネクタを使用して説明されました)

しかし、最初に、いくつかのコードを示す問題について説明します。ここに私が入れたものがあります:

$db=ConnectionFactory::CreateConnection();

$fileName = 'somefile.csv';

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");


    $fh = @fopen( 'php://output', 'w' );


    $query = "SELECT * FROM person";
    $results = $db->query($q)->fetchall();

    $headerDisplayed = false;

    foreach ( $results as $data ) {
        // Add a header row if it hasn't been added yet
        if ( !$headerDisplayed ) {
            // Use the keys from $data as the titles
            fputcsv($fh, array_keys($data));
            $headerDisplayed = true;
        }

        // Put the data into the stream
        fputcsv($fh, $data);
    }
    // Close the file
    fclose($fh);
    // Make sure nothing else is sent, our file is done
    exit;

CSV私が取得しているファイルには、次のような double 値が含まれています。

"name","name","phone","phone","email","email"
"John","John","501231","501231","test","test"
"Bob","Bob","1111","1111","test2","test2"

関数を実行しようとするとpg_fetch_array、エラーが発生します:

pg_fetch_array() expect parameter 1 to be resource, array given

csv を修正するにはどうすればよいですか?

4

1 に答える 1

7

PDO fetch() または fetchall() のデフォルトは PDO::ATTR_DEFAULT_FETCH_MODE です。これは、行を列挙配列と連想配列の両方として取得するため、重複が発生します。

列挙型または連想型としてフェッチしますが、単純にデフォルトにしないでください

$db->query($q)->fetchall(PDO::FETCH_ASSOC);
于 2013-09-16T09:58:52.857 に答える