2016-02-06 3 views
-1

Je souhaite insérer un fichier csv dans ma base de données en utilisant php. J'ai essayé le code suivant, mais il donne l'erreur suivanteInsérer un fichier CSV dans la base de données mysql

Fatal error: Call to a member function exec() on null in C:\xampp\htdocs\ICT_project\class.import.php on line 25

<?php 
include 'connection.php'; 

class Import { 
private $pdo; 

public function __construct() { 
    $obj_connect = new DBconnect(); 
    $this->pdo = $obj_connect->db_con; 

} 

public function import_csv() { 

    $extension= end(explode(".", basename($_FILES['file']['name']))); 
    if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') { 
     $file = $_FILES['file']['tmp_name']; 
     $handle = fopen($file, "r"); 
     try {   
      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
       //$num = count($data); 

      $importSQL = "INSERT INTO tbl_applicants(application_no, applicant_name,applicant_email, applicant_mobile, applicant_address) VALUES('$data[0]','$data[1]')"; 

      $this->pdo->exec($importSQL); 
      } 
     } 
     catch(PDOException $e) { 
      echo $e->getMessage(); 
     } 

    } 
} 

Mon tbl_applicants ont cinq champs nommés: application_no, applicant_name, applicant_email, applicant_mobile, applicant_address. Dans le fichier csv j'ai une ligne de données de remorquage avec au-dessus de cinq champs. Je ne comprends pas ce que sera la requête d'insertion?

Salut, voici le code mis à jour qui fonctionne bien. Maintenant, je veux passer la première ligne de mon fichier .csv qui contient généralement l'en-tête (identifiant, nom, email, adresse). Comment puis-je faire ceci?

<?php 
include 'connection.php'; 

class Import { 
    private $pdo; 

    public function __construct() {  
     $obj_connection = new Db_connection(); 
     $this->pdo = $obj_connection->connection();  
    } 

    public function import_csv() { 

     $extension= end(explode(".", basename($_FILES['file']['name']))); 
     if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') { 
      $file = $_FILES['file']['tmp_name']; 
      $handle = fopen($file, "r"); 
      try {   
       while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {     
       $importSQL = "INSERT INTO tbl_applicants (application_no, applicant_name, applicant_email, applicant_mobile, applicant_address) VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')"; 
       $this->pdo->query($importSQL); 
       } 
      } 
      catch(PDOException $e) { 
       echo $e->getMessage(); 
      } 

     } 
    } 

} 
+0

Veuillez ajouter toutes les valeurs des champs que vous avez ajoutés dans la requête d'insertion. (numéro de la demande, nom du demandeur, numéro du demandeur, numéro du demandeur, adresse du demandeur) 5 champs pour insérer une requête et sur les valeurs seulement 2 VALEURS ('$ data [0]', '$ data [1]'). – Jalpa

+0

la requête sql a cinq champs référencés mais vous ne fournissez que deux données en entrée – RamRaider

Répondre

0

Veuillez remplacer cette requête d'insertion par la requête ci-dessus.

$importSQL = "INSERT INTO tbl_applicants 
      (application_no, applicant_name,applicant_email, applicant_mobile, applicant_address) 
      VALUES('$data[0]','$data[1]','','','')"; 
+0

Je pense que vous vouliez dire '$ importSQL =" INSÉRER INTO tbl_applicants (nom_application, nom_posant, applicant_mail, applicant_mobile , applicant_address) VALUES ('{$ data [0]}', '{$ data [1]}', '', '', '') "; ';) ' – Matt

+0

@Jalpa J'ai essayé votre requête mais pareil Erreur. –

+0

@NishanSingha quel type d'erreur vous allez? – Jalpa

0

ayant pas vu les données, il est juste une supposition beased sur ce que vous avez utilisé ci-dessus, mais peut-être vous avez juste besoin d'ajouter les autres champs de la csv?

$importSQL = "INSERT INTO `tbl_applicants` 
    (application_no, applicant_name, applicant_email, applicant_mobile, applicant_address) 
    VALUES 
    ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')" 
+0

Cela me donne Avis: Offset non défini: 2 Avis: Offset non défini: 3 Avis: Offset non défini: 4 dans C: \ xampp \ htdocs \ ICT_project \ class.import.php on line 23 –