2015-05-11 2 views
2

У меня есть CSV-файл с 3 колонками имя, фамилия, matricule, и я хотел бы импортировать их с заказом по 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 (Errno)

Мы импортируем каждую неделю этого вида CSV файл, и мне нужно, чтобы иметь авто AI id будет одинаковым все время. Мистер Х не может быть на одну неделю id = 61 и на следующей неделе id = 63. Если ORDER BY '$matricule' при импорте возможно, он должен решить мою проблему. В противном случае я должен сделать это вручную, преобразовывая его в CSV.

+1

Применение ORDER BY для выбора заявления, не Вставки –

+0

Но не полагайтесь на автоинкремент идентификатор для заказа записей, это только гарантирует уникальность не заказывать –

+0

@MarkBaker уверен, что я всегда делаю это, за исключением того, что на этот раз мне нужно, чтобы он был сохранен уже упорядоченным по математике. Я не уверен, что это возможно. – BackTrack57

ответ

0

Я доволен идеей, что уникальный идентификатор, такой как MD5, является лучшим. Мне также нужно история так что я удалил 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')"); 

      } 
Смежные вопросы