簡體   English   中英

如果不存在CSV文件,則功能將繼續向數據庫中添加空行

[英]If CSV file not exsist then function keep adding empty rows in to database

我需要一點幫助。 我有一個Model文件,此文件將CSV文件導入數據庫。 但是我的模型文件從C:\\wamp\\www\\cakephp-2.5.6\\app\\tmp\\uploads\\Kontaktid獲取此CSV文件,如果此文件夾中不存在名為export.csv CSV文件,則我的函數會繼續添加空行進入數據庫。

我可以做這樣的事情嗎(我試圖將其添加到Controller中,但是不起作用)?

If empty(Kontaktid) {

   echo ("CSV file is not found");exit;
}

這是我的控制器文件:

function import() {
            $this->Kontaktid->import('export.csv');
        }

這是我的模型文件:

<?php  

class Kontaktid extends AppModel {
    public $validate = array(
        'title' => array('rule' => 'notEmpty'),
        'body' => array('rule' => 'notEmpty')
    );
    var $name = 'Kontaktid';
    function import($filename) {
        // set the filename to read CSV from
        $filename = TMP . 'uploads' . DS . 'Kontaktid' . DS . $filename;
        // open the file
        $handle = fopen($filename, "r");
        // read the 1st row as headings
        $header = fgetcsv($handle);
        // read each data row in the file
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $this->query ("INSERT into kontaktids(id,Eesnimi,Perenimi,Maakond,Linn,Tanav,Maja,Telefon,lisanumbrid) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')");
            $this->query;
        }
         print "Import done";
        // close the file
        fclose($handle);
    }
}

感謝您的幫助!

您可以使用:

<?php
$filename = '/path/to/export.csv';

if (file_exists($filename)) {
    // do your import stuff.
} else {
    // File is not exist.
}
?>

檢查此鏈接以獲取更多信息: http : //php.net/manual/en/function.file-exists.php

我建議不要自己編寫代碼,這是一個很棒的庫,可以為您解析csv https://github.com/parsecsv/parsecsv-for-php

function import($filename) {
            // set the filename to read CSV from
            $filename = TMP . 'uploads' . DS . 'Kontaktid' . DS . $filename;
            if (file_exists($filename)) {
                // do your import stuff.
                // open the file
            $csv = new parseCSV($filename);
            //print_r($csv->data);
            //count the rows
                if( count($csv->data) > 0) {
                    foreach($csv->data as $data) {
                       $this->query ("INSERT into kontaktids(id,Eesnimi,Perenimi,Maakond,Linn,Tanav,Maja,Telefon,lisanumbrid) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')");
                       $this->query;
                    }
                }
                print "Import done";
            } else {
               print "File is not exist";.
         }  
}

while條件也應該檢查返回值是否也為NULL 如果文件無效,就是這種情況。 來源: http//php.net/manual/en/function.fgetcsv.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM