Avatar billede jop... Nybegynder
29. juli 2007 - 11:12 Der er 5 kommentarer og
1 løsning

fgetcsv problemstilling.

Jeg er ved at lave en hjemmeside for en badminton-forening. I den forbindelse skal en månedligt have synkroniseret hjemmesiden medlemsdatabase på hjemmesiden, med foreningens database (noget foreningshalløjsa de har købt sig til.

Det system de kører kan lave en kommaseperet csv-fil, og jeg kan dermed via et simpelt script importere dataene til min mysql databse. Det gør jeg med følgende kode:

<?
require 'includes/conn.php'; // Forbindelse til databasen
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
  $data = array_pad($data,20,'');
  $input = "'" . implode("','", $data) . "'";
  $sql = "INSERT INTO members (Gruppenummer,Gruppenavn,Gruppetype,Navn,Adresse,Adresse2,Postnr,Bynavn,Telefon,Mobil,Email,Born,Hverv,Personkey,Referencenummer,Licensnummer,Note,Medlemsstatus,Indmeldelsesdato,Udmeldelsesdato) VALUES ($input)";
  mysql_query($sql) or die(mysql_error());
}
fclose($handle);
echo "Data er hermed importeret";
?>

Det fungerer egentlig også ok, men jeg har et meget forstyrende problem. Hvis der under en af felterne er brugt et:
'
Fejler hele scriptet. HAr jeg mulighed for at få scriptet til at fjerne disse, inden den kører en "insert"? Det er jo et problem i mysql query'en?
Avatar billede jakobdo Ekspert
29. juli 2007 - 11:39 #1
Du kunne smide data igennem:
mysql_real_escape_string()

Så det bliver:

VALUES (".mysql_real_escape_string($input).")";
Avatar billede erikjacobsen Ekspert
29. juli 2007 - 11:43 #2
Det er forsåvidt den rigtige funktion, jakobdo, men du skal ikke have det gjort på teksten $input, men på elementerne i $data.
Avatar billede jakobdo Ekspert
29. juli 2007 - 11:48 #3
Så må det jo næsten være:

$data = array_pad($data,20,'');
$newData = array_map("mysql_real_escape_string", $data);
$input = "'" . implode("','", $newData) . "'";

Er dog lidt i tvivl om array_map kan bruges sådan.
Avatar billede jop... Nybegynder
29. juli 2007 - 11:57 #4
Det virker helt perfekt.

Tak for hjælpen. Kan man få et svar?  :o)
Avatar billede jakobdo Ekspert
29. juli 2007 - 11:59 #5
Svar!
Avatar billede jakobdo Ekspert
29. juli 2007 - 12:41 #6
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester