fgetcsv按$ fileop插入值顺序

时间:2015-05-11 14:50:01

标签: php mysql csv fgetcsv

我有一个包含3列姓氏,名字,matricule 的CSV文件,我想通过 matricule

按顺序导入它们

目前我有这个有效的PHP代码:

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

            $lastname = $fileop[0];
            $firstname = $fileop[1];
            $matricule = $fileop[2];
            $sql = mysql_query("INSERT INTO personnal (lastname,firstname,matricule,usermaj) VALUES ('$lastname','$firstname','$matricule','importCSV')");
        }

我尝试添加ORDER BY $matricule,但这太容易了。

$sql = mysql_query("INSERT INTO personnal (lastname,firstname,matricule,usermaj) VALUES ('$lastname','$firstname','$matricule','importCSV') ORDER BY '$matricule'");
  

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便使用“#ORDER BY'在第1行(错误)

我们将每周导入这种CSV文件,我需要让自动AI ID始终保持一致。先生X不能是一周id = 61而下周id = 63。 如果在导入过程中ORDER BY '$matricule'可能会解决我的问题。否则我必须在将其转换为CSV时手动完成。

1 个答案:

答案 0 :(得分:0)

我最终认为像MD5这样的独特ID是最好的。我还需要历史记录,所以我删除了TRUNCATE table

解决方案:

$personnal_id = md5($lastname.$fistname);

            $resultpersonnal_id = mysql_query("SELECT COUNT(*) AS number FROM personnal WHERE personnal_id='$personnal_id'");
            $number=mysql_result($resultpersonnal_id, 0, 'number');



            if ($number == 0) {
                $sql = mysql_query("INSERT INTO personnal (personnal_id,lastname,firstname,matricule,usermaj) VALUES ('$personnal_id','$lastname','$firstname','$matricule','importCSV')");

            }