SQL插入日期始终为NULL

时间:2014-10-13 17:09:26

标签: php mysql sql csv

我尝试使用以下代码将上传页面插入到我的数据库中:

if($file!=="")
    {

        echo "<br/>".$file;
        $handle = fopen($file, "r");
        $row = 0;

        $delete_records = mysql_query("DELETE FROM affiliationagreements");
        $delete_records = mysql_query("DELETE FROM college");
        $delete_records = mysql_query("DELETE FROM program");
        $delete_records = mysql_query("DELETE FROM facility");
        $delete_records = mysql_query("DELETE FROM submitor");
        $delete_records = mysql_query("DELETE FROM location");
        //will loop each record in the CSV file
        while(($fileop = fgetcsv($handle,1000,",")) !== false )
        {
            //columns names of the CSV file are not needed
            if($row==0)
            {
                $row++;
            }
            else
                {
                    //accept apostrophes in the strings
                    $fileop = array_map("mysql_real_escape_string",$fileop);

                    $sql = mysql_query("INSERT INTO affiliationagreements(id, AANumber, Facility, Submitor, Program, Location, College, SubmissionDate, Action, EffectiveDate, Status, ExpirationDate)
                                    VALUES('',
                                    '$fileop[0]', 
                                    '$fileop[1]', 
                                    '$fileop[2]', 
                                    '$fileop[3]', 
                                    '$fileop[4]', 
                                    '$fileop[5]', 
                                    '$fileop[11]', 
                                    '$fileop[23]', 
                                    '$fileop[24]', 
                                    '$fileop[25]', 
                                    '$fileop[26]') 
                                ")or die(mysql_error());

要提供示例,当我上传我的CSV文件以添加值时,我会在控制台中将它们打印出来,并看到正确读取值并且它们是正确的。但是,一旦我的PHP脚本结束并返回主页面,我的日期都是空的。它们都不是csv文件中反映的值。这是我的数据库的架构:

CREATE TABLE `affiliationagreements` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `AANumber` varchar(20) DEFAULT NULL,
  `Facility` varchar(150) DEFAULT NULL,
  `Submitor` varchar(50) DEFAULT NULL,
  `Program` varchar(60) DEFAULT NULL,
  `Location` varchar(50) DEFAULT NULL,
  `College` varchar(50) DEFAULT NULL,
  `SubmissionDate` date DEFAULT NULL,
  `Action` varchar(50) DEFAULT NULL,
  `EffectiveDate` date DEFAULT NULL,
  `Status` varchar(50) DEFAULT NULL,
  `ExpirationDate` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

如果我将SubmissionDate,EffectiveDate和ExpirationDate更改为varchar,它们会正确插入但我无法使用varchar,因为我正在比较日期值。和建议?

***更新。在CSV文件中,格式为MM / DD / YYYY。我不认为这会是一个问题。改变这个会更好吗?而且我删除了记录,因为我的老板希望在文件重新上传之前清除数据库,因为上传的文件是之前上传的文件的更新。 ****

2 个答案:

答案 0 :(得分:1)

检查您的日期格式,因为MySql需要采用YYYY-MM-DD格式

INSERT INTO table SET date = '2014-05-13'

如果你有不同的格式,日期将存储&#39; 0000-00-00&#39;代替。因此,在运行查询之前,请通过回显查询字符串来仔细检查插入。

答案 1 :(得分:0)

mysql date字段仅接受此格式的日期:0000-00-00

您可以在插入查询中使用DATE_FORMAT()但我无法提供问题,因为您没有发布实际日期的格式。

http://www.w3schools.com/sql/func_date_format.asp