2011-05-09 24 views
0

繼續從我發佈的previous question,我設法得到很好的工作,我現在卡住試圖檢查和存儲csv文件的日期,然後執行腳本,如果csv文件更新。我計劃在正常工作時運行cron作業,以便定期檢查新的csv文件。當我手動將修改的csv文件添加到目錄並手動運行腳本時,我似乎無法解決爲什麼date和csv文件未更新到數據庫中的原因。PHP從目錄加載和更新CSV文件

任何幫助非常感謝,S.

當前代碼:

  $stat = stat('../data/filename.csv'); 
      $datetime = date ("F d Y H:i:s.", $stat['mtime']); 
      $datetime = mysql_real_escape_string($datetime); 
      $datetime = strtotime($datetime); 
      $datetime = date('Y-m-d H:i:s',$datetime);    
      echo "<br />Last modified: " . $datetime;     

      $query=mysql_query("select * from iscsvtime"); 
      $dateResult=mysql_fetch_array($query);   
      $stored = $dateResult['added'];    

      if (($stored <= $datetime) && ($handle = fopen("../data/filename.csv", "r")) !== FALSE) { 
       $i=0; 
       echo "<br />Stored date: " . $stored; 
       mysql_query("INSERT INTO iscsvtime(added) VALUES ('$datetime')");         
       mysql_query('TRUNCATE TABLE isstock;'); 
       while (($data = fgetcsv($handle, 0, ",")) !== FALSE) 
       {      
        if($i>0){       
         $q="insert into isstock set feedid='".$data[0]."', vehicleid='".$data[1]."', registration='".$data[2]."', colour='".$data[3]."', fueltype='".$data[4]."', year='".$data[5]."', mileage='".$data[6]."', bodytype='".$data[7]."', doors='".$data[8]."', make='".$data[9]."', model='".$data[10]."', variant='".$data[11]."', enginesize='".$data[12]."', price='".$data[13]."', previousprice='".$data[14]."', transmission='".$data[15]."', picturerefs='".$data[16]."', servicehistory='".$data[17]."', previousowners='".$data[18]."', description='".$data[19]."', fourwheeldrive='".$data[20]."', options='".$data[21]."', comments='".$data[22]."', new='".$data[23]."', used='".$data[24]."', site='".$data[25]."', origin='".$data[26]."', v5='".$data[27]."', condit='".$data[28]."', exdemo='".$data[29]."', franchiseapproved='".$data[30]."', tradeprice='".$data[31]."', tradepriceextra='".$data[32]."', servicehistorytext='".$data[33]."', capid='".$data[34]."'";      
         mysql_query($q); 
        } 
        ?> 
         <tr> 
          <?php 
          foreach($data as $rec){ 
           echo '<td>'.$rec.'</td>'; 
          } 
          ?> 
         </tr> 
        <?php 
        $i++; 
       } 
      } 
      fclose($handle); 

編輯:原來我設法解決這個自己;只是不得不稍微更改if聲明並將INSERT INTO iscsvtime更改爲UPDATE。下面更新代碼:

​​

回答

0

我會傾向於說單引號和雙引號的混合是沒有幫助你的事業。這種不一致可能會導致任何數量的可能的錯誤,但它不會妨礙可讀性。

線,如

echo "<br />Stored date: " . $stored; 

可以通過

echo "<br />Stored date: {$stored}"; 

被替換或者是在今後的腳本

echo '<td>'.$rec.'</td>'; 

我認爲這可能是絆倒了使用相同的符號你SQL語句

mysql_query("INSERT INTO iscsvtime(added) VALUES ('$datetime')"); 

嘗試將其更改爲

mysql_query("INSERT INTO iscsvtime(added) VALUES ('{$datetime}')"); 

除此之外,你可以通過使用的MySQL錯誤函數php.net/mysql_error添加一些錯誤日誌,就像這樣:

if(!mysql_query("INSERT INTO iscsvtime(added) VALUES ('{$datetime}')")) 
{ 
    echo mysql_errno . ': ' . mysql_error(); 
} 

其他需要檢查的包括在需要它的函數中引用的磁盤上文件的正確位置,文件是空的,最後,插入語句是否匹配表格的佈局,即如果表格有多個列,那麼是非提供的列設置爲允許NULL值,另外rwise,這些應該在insert語句中定義。

希望這會有幫助