2017-11-19 16 views
0

PHPを使用する際に連想配列からCSVファイルを作成することに問題があります。私の連想配列はsqlsrv_fetch_array関数の結果です。連想配列のPHP CSV

私はコードを実行すると:

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
    echo '<pre>'; 
    print_r($row); 
    echo '</pre>'; 
} 

を私は見ることができます:

Array 
    (
    [Username] => User1 
    [Password] => Password1 
    [DisplayName] => UserOne 
    [FirstName] => User 
    [LastName] => One 
    [Role] => Bacon 
    [HomeEmailAddress] => [email protected] 
) 
Array 
(
    [Username] => User2 
    [Password] => Password2 
    [DisplayName] => UserTwo 
    [FirstName] => User 
    [LastName] => Two 
    [Role] => Egg 
    [HomeEmailAddress] => [email protected] 
) 
Array 
(
    [Username] => User3 
    [Password] => Pasword3 
    [DisplayName] => UserThree 
    [FirstName] => User 
    [LastName] => Three 
    [Role] => Sausage 
    [HomeEmailAddress] => [email protected] 
) 

すべての格好良いです。しかし、私が抱えている問題は、そのことをCSVファイルに取り込むことです。私は、whileループ内のループ($キー=> $値として$行)のforeachを使用して、fputcsv作業を取得しようとしている私の頭を叩いてきたファイルが

Username,Password,DisplayName,FirstName,LastName,Role,HomeEmailAddress 
User1,Password1,UserOne,User,One,Bacon,[email protected] 
User2,Password2,UserTwo,User,Two,Egg,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 

に見えるようにしたいですしかし、私はどこにも早く行きません。これは無駄なクエストですか? _sql_fetch_array_を使用して作成された配列でこれを実行できますか?

私はどこループ内のコードを配置した場合:

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

foreach ($row as $key => $value) { 
fputcsv($fp, $row); 
} 

fclose($fp); 

私は出力とcsvファイルを取得:

User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 

任意のヒントや提案をいただければ幸いです。

+0

セパレータとは何か、2つから始まる不確定な空白の数、データにスペースが含まれている場合はどうなりますか?これはCSVであると確信していますか?いくつかの固定幅のファイルフォーマットではないでしょうか?さらに、データベースコードが 'fputcsv()'の使用よりも重要であると思うのは不思議です。 –

+0

悪い形成されたキューかもしれません私の頭の中の何かを理解していないからです。私はこのことでかなり経験がありません。 –

+0

あなたは正しいCSVを取得しています。必要なファイル形式はCSVのようには見えません。正確なスペックはあなたに与えられていますか? –

答えて

0

あなたはすなわち、各行を読み、あなたのCSVへ出行を書く(あなたが持っている2つのコードセットを組み合わせる必要がある。

$fp = fopen('file.csv', 'w'); 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
fputcsv($fp, $row); 

} 

fclose($fp); 

あなたがそれをやっていた方法は1つだけの行を見ていました。

+0

ありがとう!私の読書から、私はforeachループを使用しなければならないと思った。私は見出しをハードコードすることはできますが、見出しを引っ張っても解決策があれば、将来はもっと柔軟になります。しかし、ありがとう! –