Goedendag,
Zit hier met een scriptje wat een CSV-bestand (comma separated value - tekstbestandje wat tabel bevat. Kolommen gescheiden door puntkomma) kan importeren in een database-tabel. Werkte tot nu toe goed, tot ik een CSV-bestand probeerde te importeren met o.a. de volgende velden probeerde te importeren :
De eerste van de twee word nog geïmporteerd, de tweede niet. Naar mijn idee filtert mijn code alle speciale characters uit de strings. Voor zover ik weet zijn dat voor PHP alleen de enkele en dubbele quote, en voor MySQL komen daar ook nog de backslahs, procent en underscore bij. Hier is overigens mijn code (fragment) :
Kan iemand mij vertellen of ik nog een uitzonderingssitutatie vergeten ben? Of zie ik hier gewoon wat over het hoofd?
Zit hier met een scriptje wat een CSV-bestand (comma separated value - tekstbestandje wat tabel bevat. Kolommen gescheiden door puntkomma) kan importeren in een database-tabel. Werkte tot nu toe goed, tot ik een CSV-bestand probeerde te importeren met o.a. de volgende velden probeerde te importeren :
code:
1
2
| 1;Bergkotte Trading B.V.;Bergkotte;;;;;;jaapjp@hetnet.nl;; 1;Beheermaatschappij Oomen B.V.;Philippe Möller;;;;;;jaapjp@hetnet.nl |
De eerste van de twee word nog geïmporteerd, de tweede niet. Naar mijn idee filtert mijn code alle speciale characters uit de strings. Voor zover ik weet zijn dat voor PHP alleen de enkele en dubbele quote, en voor MySQL komen daar ook nog de backslahs, procent en underscore bij. Hier is overigens mijn code (fragment) :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| // Load the CSV file in an array $CDFArray = file($UploadedFile); // Haal illegale characters weg $CDFArray = str_replace("'" , "\'" , $CDFArray); $CDFArray = str_replace("\"", "\\\"", $CDFArray); $CDFArray = str_replace("\\", "\\\\", $CDFArray); $CDFArray = str_replace("%" , "\\%" , $CDFArray); $CDFArray = str_replace("ö" , "o" , $CDFArray); $CDFArray = str_replace("Ö" , "O" , $CDFArray); // Explode every element of CDFarray by ; and make it equal that for ($A = 0;$A < count($CDFArray);$A++){ $Temp001 = explode(";", $CDFArray[$A]); $CDFArray2[$A] = $Temp001; } // Make empty string $TableCreateString = ""; // Create the beginning of our query sentence @mysql_query("DROP TABLE $TabelTitle"); // Extend our query sencene with every detected field in the CSV file. // The first line of the CSV should contain the names of the fields. for ($A = 0;$A < count($CDFArray2[0]);$A++){ $TableCreateString .= (", ". $CDFArray2[0][$A]. " blob"); } // Create the full query with the string created above $Query = ("CREATE TABLE auto_$TabelTitle (ID int NOT NULL auto_increment PRIMARY KEY". $TableCreateString. ")"); // printf("Query was : $Query <BR>\n"); // Carry out the query mysql_query($Query); // Insert all values from the CSV in the created table for ($A = 1;$A < count($CDFArray2);$A++){ $InsertValues = ("NULL, '". $CDFArray2[$A][0]. "'"); for ($B = 1;$B < count($CDFArray2[$A]);$B++){ $InsertValues .= (", '". $CDFArray2[$A][$B]. "'"); } $Query = ("INSERT INTO auto_$TabelTitle VALUES($InsertValues)"); // printf($Query. "<BR>\n"); mysql_query($Query); } |
Kan iemand mij vertellen of ik nog een uitzonderingssitutatie vergeten ben? Of zie ik hier gewoon wat over het hoofd?
Genoeg is meer dan veel, en tart den overvloed