php
  • csv
  • 2014-11-08 47 views 0 likes 
    0
    解析CSV時

    我使用PHP下面的代碼讀取CSV文件行:讀多了一個PHP

    $file = fopen("customers.csv", "r"); 
    
        while (!feof($file)) 
        { 
        $rr = fgetcsv($file); 
        $name = $rr[0]; 
        $surname = $rr[1]; 
    
        $sql = 'INSERT INTO customer SET ...'; 
        ... 
        $s->execute(); 
        } 
        fclose($file); 
    

    的代碼將插入在CSV文件中的所有記錄到customer表, 但它試圖用NULL值更多地插入一行並失敗。

    如何更正代碼以便在customers.csv文件中只插入 的行數?

    +0

    檢查'$ name'是否爲空,並且不要插入,如果它是 – 2014-11-08 15:51:54

    +1

    你可以簡單的使用while( $ rr = fgetcsv($ file))!== false)'而不是 - 當fgetcsv到達文件末尾時它將返回false。 – CBroe 2014-11-08 15:56:40

    +1

    而不是手動'fgetcsv'ing,而是使用帶有:: READ_CSV和:: SKIP_EMPTY的'SplFileObject' foreach。 – mario 2014-11-08 15:56:50

    回答

    1

    fgetcsv函數將遇到EOF,但是不立即退出循環。相反,您在正常情況下檢查EOF之前,正常處理CSV行。只需在致電fgetcsv(也可能在while循環)之後立即添加支票EOF。但是,如果在fgetcsv函數之後立即遇到EOF(或者如果$rr爲空),則也可以執行while (true) {...}然後'退出'while循環。 (不知道的PHP語法,否則我會張貼確切的代碼,但這個邏輯應該工作)

    相關問題