PHP从目录加载和更新CSV文件

PHP从目录加载和更新CSV文件,php,mysql,Php,Mysql,在我发布的一篇文章之后,我成功地将其工作得很好,现在我一直在尝试检查和存储csv文件的日期,如果csv文件较新,则执行脚本。我计划在cron作业正常工作时运行它,以便定期检查更新的csv文件。当我手动将修改后的csv文件添加到目录中,然后手动运行脚本时,我似乎无法理解为什么日期和csv文件没有更新到数据库中 非常感谢您的帮助,S 当前代码: $stat = stat('../data/filename.csv'); $datetime = d

在我发布的一篇文章之后,我成功地将其工作得很好,现在我一直在尝试检查和存储csv文件的日期,如果csv文件较新,则执行脚本。我计划在cron作业正常工作时运行它,以便定期检查更新的csv文件。当我手动将修改后的csv文件添加到目录中,然后手动运行脚本时,我似乎无法理解为什么日期和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);

我倾向于说单引号和双引号的混合对你的事业没有帮助。这种不一致性可能会导致许多可能的错误,而这些错误并不妨碍可读性

行,例如

echo "<br />Stored date: " . $stored;
试着把它改成

mysql_query("INSERT INTO iscsvtime(added) VALUES ('{$datetime}')");
除此之外,您还可以通过使用mysql错误函数添加一些错误日志记录,如下所示:

if(!mysql_query("INSERT INTO iscsvtime(added) VALUES ('{$datetime}')"))
{
    echo mysql_errno . ': ' . mysql_error();
}
要检查的其他事项包括:文件在磁盘上的正确位置(在需要它的函数中引用),文件是否为空,最后,insert语句是否与表的布局匹配,即,如果表有多个列,则未提供的列是否设置为允许空值,否则,这些应该在insert语句中定义

希望这有帮助

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