Import CSV naar Database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Marco -

- Marco -

23/01/2013 12:22:52
Quote Anchor link
Hallo allemaal :)

Ik had een scriptje gevonden dat een CSV file importeert naar de database en de rows toevoegd maar nu krijg ik de error: Column count doesn't match value count at row 1

Ik krijg niet gevonden wat er fout zou moeten zijn, hoe kan ik deze error oplossen?

De tabel 'NewslettersNoCustomers' ziet er zo uit:
Screenshot: Afbeelding

en de CSV File ziet er zo uit:
Screenshot: Afbeelding


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $link_id
= mysql_connect("localhost", "USERNAME", "PASSWORD") or die("Could not connect.");
        if(!mysql_select_db("DATABASENAAM",$link_id))        die("database was not selected.");
    $file_handle = fopen("Test.csv", "r");
    while (($line_of_data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
    
    $line_import_query="INSERT into NewslettersNoCustomers values('$line_of_data
    [0]','$line_of_data[1]','$line_of_data[2]')"
;

      mysql_query($line_import_query) or die(mysql_error());

     }

?>
Gewijzigd op 23/01/2013 14:37:40 door - Marco -
 
PHP hulp

PHP hulp

22/12/2024 18:21:01
 
- Ariën  -
Beheerder

- Ariën -

23/01/2013 12:34:55
Quote Anchor link
In je PMA-screenshot zie ik twee velden, maar je INSERT telt er drie...
 
- Marco -

- Marco -

23/01/2013 13:15:19
Quote Anchor link
ohja ik zie het dus ik moet er 2 weghalen bij de insert? omdat UserID met AUTO_ENCREMENT is?
want hij hoeft alleen de emails in te voeren bij het veld email

-edit mijn code is nu zo maar ik krijg nogsteeds dezelfde error.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $link_id
= mysql_connect("localhost", "USERNAME", "PASSWORD") or die("Could not connect.");
    if(!mysql_select_db("DATABASENAAM",$link_id))        die("database was not selected.");
    $file_handle = fopen("Test.csv", "r");
    while (($line_of_data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
    
    $line_import_query="INSERT into NewslettersNoCustomers values('$line_of_data
    [0]')"
;

      mysql_query($line_import_query) or die(mysql_error());

     }

?>
Gewijzigd op 23/01/2013 13:27:59 door - Marco -
 
Robin S

Robin S

23/01/2013 13:28:23
Quote Anchor link
Inderdaad, de eerste waarde die je invult laat je AUTO_INCREMENT en de tweede waarde laat je vullen door je CSV bestand.

Edit:
Ik had jouw edit nog niet gelezen, probeer het zo eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $link_id
= mysql_connect("localhost", "USERNAME", "PASSWORD") or die("Could not connect.");
    if(!mysql_select_db("DATABASENAAM",$link_id))        die("database was not selected.");
    $file_handle = fopen("Test.csv", "r");

    while (($line_of_data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
        $line_import_query= "INSERT into NewslettersNoCustomers values('', ".$line_of_data[0]."')";
        mysql_query($line_import_query) or die(mysql_error());
    }

?>
Gewijzigd op 23/01/2013 13:31:03 door Robin S
 
- Marco -

- Marco -

23/01/2013 13:31:26
Quote Anchor link
@Robin Thx voor je reactie :)
Ik heb je code geprobeerd en dan krijg ik deze error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@hotmail.com')' at line 1
Gewijzigd op 23/01/2013 13:31:35 door - Marco -
 
Robin S

Robin S

23/01/2013 13:32:44
Quote Anchor link
Ik was vergeten om een ' te plaatsen voor ".$line_of_data[0]."'

Dus als het goed is moet dit werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $link_id
= mysql_connect("localhost", "USERNAME", "PASSWORD") or die("Could not connect.");
    if(!mysql_select_db("DATABASENAAM",$link_id))        die("database was not selected.");
    $file_handle = fopen("Test.csv", "r");

    while (($line_of_data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
        $line_import_query= "INSERT into NewslettersNoCustomers values('', '".$line_of_data[0]."')";
        mysql_query($line_import_query) or die(mysql_error());
    }

?>
 
- Marco -

- Marco -

23/01/2013 13:36:54
Quote Anchor link
@Robin Thx het werkt nu :)
Ik heb nu btw dit toegevoegd zodat je kan zien of het "echt" gelukt is :p

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
if($line_import_query)
    {
         echo "Invoeren van de Emails is gelukt!";
    }
    else
    {
        echo "Invoeren van de Emails is niet gelukt";
    }
Gewijzigd op 23/01/2013 13:42:33 door - Marco -
 
Robin S

Robin S

23/01/2013 13:43:30
Quote Anchor link
Ok mooi dat het werkt!
 
- Marco -

- Marco -

23/01/2013 14:17:43
Quote Anchor link
.
Gewijzigd op 24/01/2013 13:45:09 door - Marco -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.