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();
}
}
}
}
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
la requête sql a cinq champs référencés mais vous ne fournissez que deux données en entrée – RamRaider