php - CSVファイルへの列の追加[重複]

php csv

Possible Duplicate:
CSVs without quotes not working with fgetcsv




最初に、私はPHP開発者ではないことを述べたいと思います。これは、私がPHPで作成した最初のアプリケーションです。また、表示するコードが少ないことをお詫び申し上げます。

各行を実行し、関数呼び出しを介して生成している値を含む各列に新しい列を追加する必要があるCSVファイルがあります。私が理解できたほとんどのPHPは、追加のデータを取得するための関数を記述し、ファイルをCSVとして開くことです。

$csvFile = fopen('records.csv');
$csv = fgetcsv($csvFile);

foreach($csv as $line){
    // Create a new code to populate the new column with:
    $linkCode = getUniqueCode();
    // Add the column to the record
    // Save the record back to the csv
}
// Save the CSV back to a file


繰り返しになりますが、コードが不足していることを残念に思っていますが、自分がやっていることに対してあまり多くのリソースを見つけることができませんでした。

編集:解析が一緒になり始めていますが、まだ完全ではありません。私が今持っている問題は、CSVが正しく解析されていないように見えることです。私のCSVファイルは次のようになります(引用符はありません)。

David Long,dave@davejlong.com
James Allen,james@davejlong.com


そして私のコードは次のようになります:

<?php
        //require_once "Mail.php";
        //require_once "Mail/mime.php";
        $facebook = '*****';
        $twitter = '*****';
        $band = '*****';
        $album = '******';
        $paypal = '******';
        $download = '******';

        function makeConnection(){
                $host=$_ENV{'DATABASE_SERVER'};
                $username="*******";
                $password="*********";
                $db_name="**********";
                $con = mysql_connect("$host", "$username", "$password")or die(mysql_error());
                mysql_select_db("$db_name")or die(mysql_error());
                return $con;
        }

        function makeCode($email, $name){
                $codeused = true;
                do{
                        $code = substr(microtime().'_'.$GLOBAL['album'],2,6);
                        $escapeCode = mysql_escape_string($code);
                        $query = mysql_query("SELECT * FROM downloads WHERE code='$code'")or die(mysql_error());
                        if(!mysql_num_rows($query))$codeused = false;
                        else $codeused = true;
                }while($codeused);

                $email = mysql_escape_string($email);
                $name = mysql_escape_string($name);
                $download = mysql_escape_string($GLOBALS['download']);

                $query = mysql_query("INSERT INTO downloads(email,name,code,download) VALUES('$email','$name','$code','$download')")or die(mysql_error());

                return 'http://********'.$code;
        }

        $conn = makeConnection();

        if(($csvFile = fopen('emails.csv','r')) !== false && ($resultCsv = fopen('result.csv','w')) !== false){
                while (($data = fgetcsv($csvFile)) !== false){
                        $data[] = makeCode($data[1],$data[0]);
                        echo $data;
                        fputcsv($resultCsv, $data);
                }
                fclose($csvFile);
                fclose($resultCsv);
        }
?>
答え
このようなもの:

ini_set('auto_detect_line_endings',TRUE); // Fixes problem with Mac Excel    
if (($csvFile = fopen("records.csv", "r")) !== false && ($resultCsv = fopen('result.csv', 'w')) !== false) {
    while (($data = fgetcsv($csvFile)) !== false) {
        $data[] = getUniqueCode();
        fputcsv($resultCsv, $data);
    }
    fclose($csvFile);
    fclose($resultCsv);
}
関連記事

php - フォームの入力ファイルだけでファイルを送信し、他のフィールドでは送信しない方法は?

php - 開発環境のhttps環境/ SSL証明書をシミュレートするにはどうすればよいですか?

php - php-時間差を取得する

php - サーバー間で一貫性のないセッションのシリアル化

php - PHPのVB ifステートメント

php - PHP配列の組み合わせ-1対多

php - jquery添付ファイル付きの電子メールを送信

php - アプリケーションを含む最後のブラウザタブが閉じていることを検出するにはどうすればよいですか?

php - カウンターのbatch_mutate

php - PHP-Facebook、Google、Twitterを使用したログインを許可する簡単な方法