Salut,
Je ne connais pas phpexcel (et pas le temps de regarder) donc je peux pas te dire dans le détail pour l'utilisation des fonctions.
Par contre pourquoi deux fois la ligne :
Une fois suffira. Et puis tu n'es pas obligé de passer les options de la connexion une par une, tu peux créer un tableau. Par ailleurs le charset est reconnu dans la chaine de connexion depuis plusieurs années. Donc tu peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $connexion_bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ensuite tu n'as plus à redéfinir les options dans la suite du code sauf si tu veux les changer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 try { // Conseillé pour faire travailler le moteur pdo de la base de donnée qui est plus optimisé que l'émulateur php $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; // mode exception $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $chaine_connexion='mysql:host=localhost;dbname=cemkay;charset=utf8'; $connexion_bdd = new PDO($chaine_connexion, 'root', '', $pdo_options); } catch(PDOException $e) { $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage(); exit($msg); }
Pour le reste c'est quoi ces "$data[0]", "$data[]" etc. dans les values de ta requête d'insertion ? Pour une requête préparée on utilise soit des paramètres nommés (mais alors ce n'est pas la bonne syntaxe cf doc) soit des marqueurs représentés par des points d'interrogation (?). Faudrait regarder un minimum la doc avant de coder. Et en plus je t'ai déjà donné un exemple complet
Pour terminer il faut bien entendu que le tableau passé dans la méthode execute() représentent toutes les valeurs des cellules de la ligne en cours. J'ai un peu des doutes avec $cell = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); Je ne sais pas ce que fait "getCellByColumnAndRow" mais à priori j'ai un peu des soupçons sur le "3" qui ne me fait pas penser à une syntaxe générique pour retourner toutes les cellules d'une ligne ?
EDIT : rollbackTransaction() et commitTransaction() sont pour les sgbdd supportant les transactions comme innobd, à l'inverse des tables myIsam. Si ta table ne supporte pas les transactions suffit de ne pas les utiliser, d'ailleurs c'est facultatif pour les tables qui les supporte.
Partager