1

ファイルをアップロードしてから、fgetcsvを使用してファイルに処理を試みています。

これは以下の私のスクリプトです。ファイルアップロード部分を追加する前は、すべてが正常に機能していました。これでエラーは表示されず、アップロードされたデータは表示されません。

「ファイルがアップロードされました」という通知が表示され、ファイルは正しく保存されていますが、エントリ数のカウンターに0が表示されています。

if(isset($_FILES[csvgo])){

    $tmp = $_FILES[csvgo][tmp_name];

    $name = "temp.csv";

    $tempdir = "csvtemp/";

    if(move_uploaded_file($tmp, $tempdir.$name)){ echo "file uploaded<br>"; }

    $csvfile = $tempdir.$name;

    $fh = fopen($csvfile, 'r');
    $headers = fgetcsv($fh);
    $data = array();
    while (! feof($fh))
    {
        $row = fgetcsv($fh);
        if (!empty($row))
        {
            $obj = new stdClass;
            foreach ($row as $i => $value)
            {
                $key = $headers[$i];
                $obj->$key = $value;
            }
            $data[] = $obj;
        }
    }
    fclose($fh);

    $c=0;

    foreach($data AS $key){

            $c++;

            $phone = $key->PHONE;

            $fax = $key->Fax;

            $email = $key->Email;

            // do things with the data here

    }

    echo "$c entries <br>";
}
4

1 に答える 1

0

絶対サーバー パスの指定が必要になる場合があります。

$tempdir = $_SERVER['DOCUMENT_ROOT'] . "/csvtemp/";

編集: いくつかの小さな変更 (絶対パスと配列キー名への引用符の追加) だけでコードをテストしたところ、問題なく動作しました。それはおそらくあなたが投稿したものの範囲外のものです。おそらく、ファイルのパーミッション エラーか、アップロード フォームの異常でしょう。

考えただけですが、PHP エラー レベルを上げてみてください。これにより、他の方法では見過ごされていた何かが明らかになる可能性があります。

ini_set("display_errors", 1);
ini_set("error_reporting", 2147483647);

それが失敗した場合は、犯人が見つかるまで、あちこちにたくさんのエコーを投げることにいつでも頼ることができます.

于 2010-04-11T02:27:37.297 に答える