(double) probleme pour inserer donnes dans bdd
Résolu/Fermé
A voir également:
- Uncaught typeerror: mysqli_query()
- Double ecran - Guide
- Whatsapp double sim - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
15 réponses
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
24 sept. 2021 à 16:30
24 sept. 2021 à 16:30
Bonjour,
Vu les messages d'erreur, il faudrait déjà savoir ce que contient le fichier include("db_connect.php")
Vu les messages d'erreur, il faudrait déjà savoir ce que contient le fichier include("db_connect.php")
contenu db_connect.php
le retour est positif j'ai bien le echo qui s'affiche
<?php
$conn = mysqli_connect("localhost", "..............", "...............", "....................")
or die("Impossible de se connecter : " . mysqli_error());
echo 'Connexion réussie';
?>
le retour est positif j'ai bien le echo qui s'affiche
yg_be
Messages postés
23451
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
31 janvier 2025
1 564
24 sept. 2021 à 18:48
24 sept. 2021 à 18:48
bonjour,
moi je modifierais le texte sur la ligne
moi je modifierais le texte sur la ligne
echodu fichier db_connect.php, pour m'assurer que c'est bien le fichier utilisé.
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
24 sept. 2021 à 19:24
24 sept. 2021 à 19:24
Tu devrais également remplacer le mot include par require_once
Ça permettrait de s'assurer que ton fichier est bien trouvé et correctement chargé.
Ça permettrait de s'assurer que ton fichier est bien trouvé et correctement chargé.
la connection se fait bien j'ai le echo ' connection reussie' qui s'affiche
de plus je l'ai teste en creant une erreur, le die s'applique et j'ai bien le message d'erreur ( sans le echo)
de plus je l'ai teste en creant une erreur, le die s'applique et j'ai bien le message d'erreur ( sans le echo)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
25 sept. 2021 à 07:42
25 sept. 2021 à 07:42
Le problème c'est que : le message d'erreur 1 ne correspond pas au code présenté..
Et le code du module 2 n'est pas du mysqli mais du pdo ...
Alors, pour le module 1... Vire le code qui se trouve avant (la création du big array...) Et teste le à nouveau.
Dis nous si tu as toujours le même message (et montres nous le code modifié)
Et le code du module 2 n'est pas du mysqli mais du pdo ...
Alors, pour le module 1... Vire le code qui se trouve avant (la création du big array...) Et teste le à nouveau.
Dis nous si tu as toujours le même message (et montres nous le code modifié)
tu pouurais etre plus precise stp
je debute
merci
je debute
merci
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
25 sept. 2021 à 12:03
25 sept. 2021 à 12:03
Plus prescis ??
Tu gardes les lignes 19 à 28 uniquement... Et tu testes...
Tu gardes les lignes 19 à 28 uniquement... Et tu testes...
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
>
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
Modifié le 25 sept. 2021 à 12:10
Modifié le 25 sept. 2021 à 12:10
Éventuellement, inspire toi de ce code
$sql = 'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\' ;'; $result = mysqli_query($conn, $sql); if ($result) { $message = "The data was successfully added!"; } else { $message = "error: "; $message .= mysqli_error($conn); }; echo $message;
jordane45
j'ai testé voici le retour
error: The used command is not allowed with this MariaDB version
j'ai testé voici le retour
error: The used command is not allowed with this MariaDB version
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
25 sept. 2021 à 14:14
25 sept. 2021 à 14:14
j'ai teste en mettant des foreach
ce qui donne en retour :
Fatal error: Uncaught Error: Call to a member function execute() on bool in /home/u320889525/domains/............../public_html/..................php:33 Stack trace: #0 {main} thrown in /home/u320889525/domains/.........../public_html/.............php on line 33
( $stmt->execute($data_); )
si je desactive cette ligne j'ai ceci en echo :
value
toutes les values ressortent
sql
INSERT INTO produits (name,description,price) VALUES (:name, :description, :price)
ce qui prouve que le problème vient du insert
require_once("db_connect.php");
foreach ( $the_big_array as $ligne) {
foreach ( $ligne as $value) {
$data_ = [
'name' => $value,
'description' => $value,
'price' => $value,
];
$sql = "INSERT INTO produits (name,description,price) VALUES (:name, :description, :price)";
$stmt= $conn->prepare($sql);
$stmt->execute($data_);
echo'<br/>value <br/>';
echo $value;
} //fin foreach
} //fin foreach
} //fin if isset
echo '<br/>sql <br/>';
echo $sql;
ce qui donne en retour :
Fatal error: Uncaught Error: Call to a member function execute() on bool in /home/u320889525/domains/............../public_html/..................php:33 Stack trace: #0 {main} thrown in /home/u320889525/domains/.........../public_html/.............php on line 33
( $stmt->execute($data_); )
si je desactive cette ligne j'ai ceci en echo :
value
toutes les values ressortent
sql
INSERT INTO produits (name,description,price) VALUES (:name, :description, :price)
ce qui prouve que le problème vient du insert
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
25 sept. 2021 à 15:10
25 sept. 2021 à 15:10
Là tu es reparti sur le "second" code .... code qui utilise, comme je te l'ai déjà indiqué ... du PDO ....
Hors... toi tu as ouvert ta connexion en mysqli ....
Alors si tu veux utiliser ce code.. il te faut modifier le code de ton fichier db_connect.php pour le faire en PDO
Exemple ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Hors... toi tu as ouvert ta connexion en mysqli ....
Alors si tu veux utiliser ce code.. il te faut modifier le code de ton fichier db_connect.php pour le faire en PDO
Exemple ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
jordane45
je n'ai malheureusement pas le choix vu que LOAD DATA n'est pas accepte par MariaDB
du coup j'ai changé db_connect en PDO
<?php
try {
$user = '....................';
$pass = '...................';
$conn = new PDO('mysql:host=localhost;dbname=..............', $user, $pass);
} catch (PDOException $e) {
echo 'Échec lors de la connexion : ' . $e->getMessage();
}
echo 'Connexion réussie';
?
et j'ai en retour :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/u320889525/domains/best-products.fr/public_html/importcsv.php:27 Stack trace: #0 /home/u320889525/domains/best-products.fr/public_html/importcsv.php(27): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/best-products.fr/public_html/importcsv.php on line 27
(toujours le $stmt->execute($data_); ) et la connection se fait bien (Connexion réussie)
je n'ai malheureusement pas le choix vu que LOAD DATA n'est pas accepte par MariaDB
du coup j'ai changé db_connect en PDO
<?php
try {
$user = '....................';
$pass = '...................';
$conn = new PDO('mysql:host=localhost;dbname=..............', $user, $pass);
} catch (PDOException $e) {
echo 'Échec lors de la connexion : ' . $e->getMessage();
}
echo 'Connexion réussie';
?
et j'ai en retour :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/u320889525/domains/best-products.fr/public_html/importcsv.php:27 Stack trace: #0 /home/u320889525/domains/best-products.fr/public_html/importcsv.php(27): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/best-products.fr/public_html/importcsv.php on line 27
(toujours le $stmt->execute($data_); ) et la connection se fait bien (Connexion réussie)
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
25 sept. 2021 à 16:58
25 sept. 2021 à 16:58
je n'ai malheureusement pas le choix vu que LOAD DATA n'est pas accepte par MariaDB
Tu n'as visiblement pas été voir le lien que je t'ai donné ...... il est normalement possible d'activer cette option.
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/u320889525/domains/best-products.fr/public_html/importcsv.php:27
Tu n'as pas appliqué les informations qui se trouvent dans le lien concernant PDO....
Car si tu l'avais fait, tu aurais, plus du message d'erreur... l'affichage du contenu de la variable $data_ ... ce qui serait fort utile pour voir où se trouve l'erreur...
Et, pour être sûr d'avoir le bon nombre de paramètres dans le $data_ .. il faut retirer les virgules superflues.
Je t'invite également à préfixer les variable par ":"
$data_ = [ ':name' => $value, ':description' => $value, ':price' => $value ];
PS: Encore une fois .. lorsque tu postes du code sur le forum .. tu dois utiliser les BALISES DE CODE !!! ( et y préciser le langage afin d'avoir la coloration syntaxique). Merci.
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
>
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
25 sept. 2021 à 16:59
25 sept. 2021 à 16:59
tu remarquera au passage que tu mets, pour tes trois champs .. une seule valeur ... celle de la variable $value .... c'est voulu ???
voila ou j'en suis
j'ai essaye de tenir compte (au mieux de mes capacites) des differentes remarques glanées dans les différents forums et ce que j'en retire
- à l'activation du module d'enregistrement 1 j'ai ce retour :
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, PDO given in /home/u320889525/domains/............../public_html/.........php:25 Stack trace: #0 /home/u320889525/domains/........../public_html/............php(25): mysqli_query() #1 {main} thrown in /home/u320889525/domains/................./public_html/...........php on line 25
qui correspond a la ligne :
" mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits ";
si je desactive cette ligne j'ai ce retour :
Parse error: syntax error, unexpected identifier "TERMINATED" in /home/u320889525/domains/.........../public_html/............php on line 27
- à l'activation du module d'enregistrement 2 j'ai ce retour :
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '':name' = ?, ':description' = ?, ':price' = ?' at line 3 in /home/u320889525/domains/.............../public_html/..................php:41 Stack trace: #0 /home/u320889525/domains/................fr/public_html/.................php(41): PDO->exec() #1 {main} thrown in /home/u320889525/domains/............../public_html/............php on line 41
qui correspond à la ligne :
$conn->exec($sql);
- à l'activation du module d'enregistrement 3 j'ai ce retour :
Fatal error: Uncaught Error: Object of class PDO could not be converted to string in /home/u320889525/domains/............../public_html/...........php:49 Stack trace: #0 /home/u320889525/domains/............/public_html/...............php(49): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/................/public_html/.............php on line 49
qui correspond à la ligne
$req->execute([$conn]);
et j'ai du desactiver $price sinon j'ai cette erreur :
Warning: Uninitialized string offset 2 in /home/u320889525/domains/........../public_html/................php on line 47
répétée 10 fois
contenu db_connect.php :
j'ai essaye de tenir compte (au mieux de mes capacites) des differentes remarques glanées dans les différents forums et ce que j'en retire
- à l'activation du module d'enregistrement 1 j'ai ce retour :
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, PDO given in /home/u320889525/domains/............../public_html/.........php:25 Stack trace: #0 /home/u320889525/domains/........../public_html/............php(25): mysqli_query() #1 {main} thrown in /home/u320889525/domains/................./public_html/...........php on line 25
qui correspond a la ligne :
" mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits ";
si je desactive cette ligne j'ai ce retour :
Parse error: syntax error, unexpected identifier "TERMINATED" in /home/u320889525/domains/.........../public_html/............php on line 27
- à l'activation du module d'enregistrement 2 j'ai ce retour :
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '':name' = ?, ':description' = ?, ':price' = ?' at line 3 in /home/u320889525/domains/.............../public_html/..................php:41 Stack trace: #0 /home/u320889525/domains/................fr/public_html/.................php(41): PDO->exec() #1 {main} thrown in /home/u320889525/domains/............../public_html/............php on line 41
qui correspond à la ligne :
$conn->exec($sql);
- à l'activation du module d'enregistrement 3 j'ai ce retour :
Fatal error: Uncaught Error: Object of class PDO could not be converted to string in /home/u320889525/domains/............../public_html/...........php:49 Stack trace: #0 /home/u320889525/domains/............/public_html/...............php(49): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/................/public_html/.............php on line 49
qui correspond à la ligne
$req->execute([$conn]);
et j'ai du desactiver $price sinon j'ai cette erreur :
Warning: Uninitialized string offset 2 in /home/u320889525/domains/........../public_html/................php on line 47
répétée 10 fois
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$filename = 'amazon-fours.csv';
// The nested array to hold all the arrays
$the_big_array = [];
// Open the file for reading
if (($h = fopen("{$filename}", "r")) !== FALSE)
{
// Each line in the file is converted into an individual array that we call $data
// The items of the array are comma separated
include("db_connect.php");
while (($data = fgetcsv($h, 0, ";")) !== FALSE)
{
// Each individual array is being pushed into the nested array
$the_big_array[] = $data;
foreach ($the_big_array as $table)
{
foreach ($table as $contenu )
{
/*
// module d'enregistrement #1
mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits;
FIELDS TERMINATED BY \';\'
ENCLOSED BY \'"\'
LINES TERMINATED BY \'\n\' ')
or die("Erreur mise à jour table : ".mysqli_error($conn));
- / // module d'enregistrement #2 /* $sql = <<<SQL INSERT INTO produits SET ':name' = $contenu[0], ':description' = $contenu[1], ':price' = $contenu[2] SQL ; $conn->exec($sql); */ // module d'enregistrement #3 $name = $contenu[0]; $description = $contenu[1]; $price = $contenu[2]; $req = $conn ->prepare('INSERT INTO produits (name,description,price) VALUES ($name,$description)'); $req->execute([$conn]); } //fin foreach #2 } // fin foreach #1 } //fin while} // fin if $sh/* echo '<br/>name : <br/> '; echo $name ; echo '<br/>description : <br/>'; echo $description ; echo '<br/>price : <br/>'; echo $price ; echo '<br/>req : <br/>'; print_r($req); */ /* // afficher le code echo "<pre>"; var_dump($the_big_array); echo "</pre>"; */?>
contenu db_connect.php :
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
try
{
$host = 'mysql:dbname=................;host=127.0.0.1';
$dsn = '............................."
$user = '............................';
$password = '...................';
$conn = new PDO($host, $user, $password);
// Activation des erreurs PDO
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
voila ou j'en suis
j'ai essaye de tenir compte (au mieux de mes capacites) des differentes remarques glanées dans les différents forums et ce que j'en retire
- à l'activation du module d'enregistrement 1 j'ai ce retour :
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, PDO given in /home/u320889525/domains/............../public_html/.........php:25 Stack trace: #0 /home/u320889525/domains/........../public_html/............php(25): mysqli_query() #1 {main} thrown in /home/u320889525/domains/................./public_html/...........php on line 25
qui correspond a la ligne :
" mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits ";
si je desactive cette ligne j'ai ce retour :
Parse error: syntax error, unexpected identifier "TERMINATED" in /home/u320889525/domains/.........../public_html/............php on line 27
- à l'activation du module d'enregistrement 2 j'ai ce retour :
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '':name' = ?, ':description' = ?, ':price' = ?' at line 3 in /home/u320889525/domains/.............../public_html/..................php:41 Stack trace: #0 /home/u320889525/domains/................fr/public_html/.................php(41): PDO->exec() #1 {main} thrown in /home/u320889525/domains/............../public_html/............php on line 41
qui correspond à la ligne :
$conn->exec($sql);
- à l'activation du module d'enregistrement 3 j'ai ce retour :
Fatal error: Uncaught Error: Object of class PDO could not be converted to string in /home/u320889525/domains/............../public_html/...........php:49 Stack trace: #0 /home/u320889525/domains/............/public_html/...............php(49): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/................/public_html/.............php on line 49
qui correspond à la ligne
$req->execute([$conn]);
et j'ai du desactiver $price sinon j'ai cette erreur :
Warning: Uninitialized string offset 2 in /home/u320889525/domains/........../public_html/................php on line 47
répétée 10 fois
contenu db_connect.php :
j'ai essaye de tenir compte (au mieux de mes capacites) des differentes remarques glanées dans les différents forums et ce que j'en retire
- à l'activation du module d'enregistrement 1 j'ai ce retour :
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, PDO given in /home/u320889525/domains/............../public_html/.........php:25 Stack trace: #0 /home/u320889525/domains/........../public_html/............php(25): mysqli_query() #1 {main} thrown in /home/u320889525/domains/................./public_html/...........php on line 25
qui correspond a la ligne :
" mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits ";
si je desactive cette ligne j'ai ce retour :
Parse error: syntax error, unexpected identifier "TERMINATED" in /home/u320889525/domains/.........../public_html/............php on line 27
- à l'activation du module d'enregistrement 2 j'ai ce retour :
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '':name' = ?, ':description' = ?, ':price' = ?' at line 3 in /home/u320889525/domains/.............../public_html/..................php:41 Stack trace: #0 /home/u320889525/domains/................fr/public_html/.................php(41): PDO->exec() #1 {main} thrown in /home/u320889525/domains/............../public_html/............php on line 41
qui correspond à la ligne :
$conn->exec($sql);
- à l'activation du module d'enregistrement 3 j'ai ce retour :
Fatal error: Uncaught Error: Object of class PDO could not be converted to string in /home/u320889525/domains/............../public_html/...........php:49 Stack trace: #0 /home/u320889525/domains/............/public_html/...............php(49): PDOStatement->execute() #1 {main} thrown in /home/u320889525/domains/................/public_html/.............php on line 49
qui correspond à la ligne
$req->execute([$conn]);
et j'ai du desactiver $price sinon j'ai cette erreur :
Warning: Uninitialized string offset 2 in /home/u320889525/domains/........../public_html/................php on line 47
répétée 10 fois
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$filename = 'amazon-fours.csv';
// The nested array to hold all the arrays
$the_big_array = [];
// Open the file for reading
if (($h = fopen("{$filename}", "r")) !== FALSE)
{
// Each line in the file is converted into an individual array that we call $data
// The items of the array are comma separated
include("db_connect.php");
while (($data = fgetcsv($h, 0, ";")) !== FALSE)
{
// Each individual array is being pushed into the nested array
$the_big_array[] = $data;
foreach ($the_big_array as $table)
{
foreach ($table as $contenu )
{
/*
// module d'enregistrement #1
mysqli_query($conn,'LOAD DATA LOCAL INFILE \'amazon-fours.csv\' INTO TABLE produits;
FIELDS TERMINATED BY \';\'
ENCLOSED BY \'"\'
LINES TERMINATED BY \'\n\' ')
or die("Erreur mise à jour table : ".mysqli_error($conn));
- / // module d'enregistrement #2 /* $sql = <<<SQL INSERT INTO produits SET ':name' = $contenu[0], ':description' = $contenu[1], ':price' = $contenu[2] SQL ; $conn->exec($sql); */ // module d'enregistrement #3 $name = $contenu[0]; $description = $contenu[1]; $price = $contenu[2]; $req = $conn ->prepare('INSERT INTO produits (name,description,price) VALUES ($name,$description)'); $req->execute([$conn]); } //fin foreach #2 } // fin foreach #1 } //fin while} // fin if $sh/* echo '<br/>name : <br/> '; echo $name ; echo '<br/>description : <br/>'; echo $description ; echo '<br/>price : <br/>'; echo $price ; echo '<br/>req : <br/>'; print_r($req); */ /* // afficher le code echo "<pre>"; var_dump($the_big_array); echo "</pre>"; */?>
contenu db_connect.php :
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
try
{
$host = 'mysql:dbname=................;host=127.0.0.1';
$dsn = '............................."
$user = '............................';
$password = '...................';
$conn = new PDO($host, $user, $password);
// Activation des erreurs PDO
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
?>
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
Modifié le 28 sept. 2021 à 17:01
Modifié le 28 sept. 2021 à 17:01
Faut arrêter de copier/coller tout et n'importe quoi au pif !!!
Essaye ça
PS: A l'avenir, lorsque tu postes du code sur le forum .. tu dois préciser le LANGAGE dans les BALISES DE CODE pour avoir la coloration syntaxique.
Explications ( à lire ENTIEREMENT !!!!!!! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Essaye ça
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Connexion à la bdd ( en PDO ) require_once("db_connect.php"); $filename = 'amazon-fours.csv'; // Open the file for reading if (($h = fopen("{$filename}", "r")) !== FALSE) { // Each line in the file is converted into an individual array that we call $row // The items of the array are comma separated while (($row = fgetcsv($h, 0, ";")) !== FALSE) { //Si l'insert ne fonctionne toujours pas, merci de décommenter les lignes ci-dessous et de nous montrer ce que ça donne // echo '<br>'; // print_r($row); //données contenues dans la ligne du fichier csv $datas = [ ':name' => !empty($row[0]) ? $row[0] : "", ':description' => !empty($row[1]) ? $row[1] : "", ':price' => !empty($row[2]) ? $row[2] : "", ]; $sql = "INSERT INTO produits (name,description,price) VALUES (:name, :description, :price)"; //Execution de la requete try { $requete = $conn->prepare($sql); $requete->execute($datas); } catch (Exception $e) { // en cas d'erreur : echo "<br>Erreur ! " . $e->getMessage(); echo "<br>Les datas :<br>"; print_r($datas); exit; } } }
PS: A l'avenir, lorsque tu postes du code sur le forum .. tu dois préciser le LANGAGE dans les BALISES DE CODE pour avoir la coloration syntaxique.
Explications ( à lire ENTIEREMENT !!!!!!! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pourtant le print_r($row) semble correct
Array ( [0] => ggg [1] => ttt [2] => 54 ) Array ( [0] => bbbb [1] => fff [2] => 21 ) Array ( [0] => ggg [1] => kkk [2] => 78 ) Array ( [0] => jjj [1] => sss [2] => 44 )
Array ( [0] => ggg [1] => ttt [2] => 54 ) Array ( [0] => bbbb [1] => fff [2] => 21 ) Array ( [0] => ggg [1] => kkk [2] => 78 ) Array ( [0] => jjj [1] => sss [2] => 44 )
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
28 sept. 2021 à 20:11
28 sept. 2021 à 20:11
Comment sont définis tes champs dans la bdd ?
Car si le prix s'enregistre... tout doit s'y mettre ...
Car si le prix s'enregistre... tout doit s'y mettre ...
# Nom Type Interclassement Attributs Null Valeur par défaut Commentaires Extra Action
1 idPrimaire int(11) Non Aucun(e) AUTO_INCREMENT
2 name int(255) Non Aucun(e)
3 description int(255) Non Aucun(e)
4 price int(255) Non Aucun(e)
1 idPrimaire int(11) Non Aucun(e) AUTO_INCREMENT
2 name int(255) Non Aucun(e)
3 description int(255) Non Aucun(e)
4 price int(255) Non Aucun(e)
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
28 sept. 2021 à 22:36
28 sept. 2021 à 22:36
Alors toi... tu stockes des nom et des description dans des int ??
Et le prix aussi ? tu n'auras jamais de virgules ??
Et le prix aussi ? tu n'auras jamais de virgules ??
jai remplace int par varchar cest bon
merci
merci
jordane45
Messages postés
38401
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 janvier 2025
4 732
28 sept. 2021 à 23:42
28 sept. 2021 à 23:42
Pas le prix j'espère...
Le prix il faut le mettre en décimal par exemple ou en float
Le prix il faut le mettre en décimal par exemple ou en float