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
| // connexion à la base
$hostname = "localhost";
$db = "la_base";
$username = "user_db";
$password = "password";
try {
$strConnection = 'mysql:host='.$hostname.';dbname='.$db; //Ligne 1
$arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
$pdo = new PDO($connStr, $username, $password, $arrExtraParam); //Ligne 3; Instancie la connexion
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
$filepath = "test.csv"
$code_personne = "";
// requête préparée d'insertion, en supposant qu'on insère tous les champs du fichier, dans l'ordre du fichier
$sql = 'INSERT INTO la_table (code_personne, champ2, champ3, champ4) VALUES (?, ?, ?, ?)';
$stmt = $pdo->prepare($sql);
if (($handle = fopen($filepath, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
// en supposant le code personne soit la 1ere colonne
if (empty($data[0])) {
// si la colonne est vide, on utilise la valeur mémorisée
$data[0] = $code_personne;
}
// en supposant que les champs soient dans le même ordre dans la requête
$stmt->execute($data);
// on mémorise le code pour la ligne suivante
$code_personne = $data[0];
}
fclose($handle);
} |
Partager