【问题标题】:fgetcsv insert values order by $fileopfgetcsv 按 $fileop 顺序插入值
【发布时间】:2015-05-11 14:50:01
【问题描述】:

我有一个包含 3 列 lastname, firstname, matricule 的 CSV 文件,我想按 ma​​tricule

的顺序导入它们

目前我有这个工作 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 服务器版本相对应的手册,以在第 1 行的“ORDER BY”附近使用正确的语法(errno)

我们每周都会导入这种 CSV 文件,我需要让自动 AI id 始终相同。 X 先生不能是一周 id=61 和下周 id=63。 如果在导入期间ORDER BY '$matricule' 是可能的,它应该可以解决我的问题。否则我必须在将其转换为 CSV 时手动进行。

【问题讨论】:

  • 将 ORDER BY 应用于 SELECT 语句,而不是 INSERT
  • 但是不要依赖自增id来排序记录,它只保证唯一性而不是顺序
  • @MarkBaker 确定我总是这样做,除了这次我需要它已经按矩阵排序存储。我不确定它是否可能。
  • 如果您将LOAD DATA INFILE 与 REPLACE 一起使用并且矩阵是唯一键,则应该可以
  • @MarkBaker 听起来有点复杂。我将研究一下如何使用我当前的 PHP 代码来调整它。谢谢

标签: php mysql csv fgetcsv


【解决方案1】:

我终于想到像 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')");

            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-26
    • 2016-04-07
    • 2013-12-18
    • 2012-07-13
    • 2021-06-15
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多