使用日期或文字在

时间:2015-04-24 07:14:35

标签: php mysql csv import fgetcsv

我有一个CSV文件,其中一列的日期格式为d / m / Y,或者单词“Illimité”,其含义为法语无限制。

我希望每次读取“Illimité”时都会在MySQL表中放入NULL值。

这是我目前的PHP代码:

if (isset($_POST['submit'])) {
        $query = "TRUNCATE TABLE `formation` ";
        $result = mysql_query($query);
        $file = $_FILES['file']['tmp_name'];
        $handle = fopen($file, "r");
        while (($fileop = fgetcsv($handle, 1000, ";")) !== false) {

            $nom = $fileop[0];
            $prenom = $fileop[1];
            $formation = $fileop[16];
            $validite = $fileop[26];

            if (is_numeric($validite)) {
                $validite = date_format(date_create_from_format('d/m/Y', $validite), 'Y-m-d');
                $sql = mysql_query("INSERT INTO formation (nom,prenom,formation,validite,usermaj) VALUES ('$nom','$prenom','$formation','$validite','importCSV')");
                } else {
                $sql = mysql_query("INSERT INTO formation (nom,prenom,formation,validite,usermaj) VALUES ('$nom','$prenom','$formation',NULL,'importCSV')");
            }
        }

可悲的是,这不起作用。 MySql显示没有错误,它一直放置NULL。 任何帮助都会让我非常感激。

1 个答案:

答案 0 :(得分:0)

试试这个:

function myFunc($CSVValue){

    if(validateDate($CSVValue)){
        //your mysql logic where you put in the date
    }else{
        //your mysql logic where you put in the null
    }


}

function validateDate($date)
{
    $d = DateTime::createFromFormat('d/m/Y', $date);
    return $d && $d->format('d/m/Y') == $date;
}

函数已从此answerphp.net

复制

- 更新 -

我不知道您的代码看起来与您提供的内容不同。 如果你把它放在你的代码中,它可能看起来像这样:

if (isset($_POST['submit'])) {
        $query = "TRUNCATE TABLE `formation` ";
        $result = mysql_query($query);
        $file = $_FILES['file']['tmp_name'];
        $handle = fopen($file, "r");
        while (($fileop = fgetcsv($handle, 1000, ";")) !== false) {

            $nom = $fileop[0];
            $prenom = $fileop[1];
            $formation = $fileop[16];
            $validite = $fileop[26];

            $d = DateTime::createFromFormat('d/m/Y', $validite);

            if ($d && $d->format('d/m/Y') == $validite) {
                $validite = date_format(date_create_from_format('d/m/Y', $validite), 'Y-m-d');
                $sql = mysql_query("INSERT INTO formation (nom,prenom,formation,validite,usermaj) VALUES ('$nom','$prenom','$formation','$validite','importCSV')");
                } else {
                $sql = mysql_query("INSERT INTO formation (nom,prenom,formation,validite,usermaj) VALUES ('$nom','$prenom','$formation',NULL,'importCSV')");
            }
        }