[php/mysql] CSV import vraag

Pagina: 1
Acties:

Onderwerpen


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik importeer een 3-tal velden uit een CSV bestand in een MySQL database. Werkt allemaal prima met onderstaande query:

PHP:
1
$result = mysql_query("LOAD DATA LOCAL INFILE 'bestand.csv' INTO TABLE login FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (afdeling, username, password)") or die('Error loading data file.<br>' . mysql_error());


Nu wil ik dus login info uit een bestand in 1 keer in laten lopen in de tabel waar deze gegevens in staan. Enige punt is, is dat ik niet weet hoe ik in deze query variabelen van de waardes in het CSV bestand maak. Dit wil ik omdat het password MD5 versleuteld de database in moet.

Kan ik dus voor deze query eerst het bestand in lezen en er variabelen van maken of kan ik in mijn query meegeven dat het veld MD5 versleuteld moet worden?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je kunt dit in 2 keer doen. Eerst alles inladen en dan vervolgens met een update query alle wachtworoden md5-en. Ik neem aan dat dit een eenmalige actie is? Anders zul je op 1 of andere manier aan moeten geven bij welke records dit nog moet gebeuren en welke niet.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ja ik heb dat inderdaad ook al bedacht, ik maak gewoon een temp tabel aan, selecteer vervolgens alles weer om er variabelen van te maken :)

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
niet doen met een 2e tabel! Dit kan veel makkelijker! Ik kan mijn csv functie niet zo snel vinden! ik zal hem zo even posten.

hier de code:
PHP:
1
2
3
4
5
6
7
8
9
<?php
$fp = fopen('bestand.csv', "r");
while ($data = fgetcsv($fp, 1000, ";")) {
$md5pass = md5($data[2]);
$query = "INSERT INTO login (afdeling,user,password) VALUES ('$data[0]','$data[1]','$md5pass')";
mysql_query($query);
}
fclose($fp);
?>

Dit zal perfect werken

[ Voor 56% gewijzigd door steffex op 30-12-2004 16:49 ]


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
ah ok top!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

wat dacht je van een temp tabel maken (voor als je dit vaker moet doen) en dan in de normale tabel stoppen op deze manier:
INSERT INTO table (username, password) SELECT username, MD5(password) FROM table

Blog [Stackoverflow] [LinkedIn]


  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
zie mun vorige post voor de code!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Doet het inderdaad perfect! Alleen de wachtwoorden worden nog niet versleuteld..gewoon nog in plain text in de database.

Eens even kijken hoe dat kan komen..

Het werkt, klein foutje in de file van me.

Thanks!!

[ Voor 9% gewijzigd door ViNyL op 30-12-2004 17:15 ]


Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
8)
Pagina: 1