Warning: mysqli_select_db() expects parameter 1 to

Résolu
garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour je vous passe mon code PHP d'où je sais pas l'erreur :
<?php
extract(filter_input_array(INPUT_POST));
$fichier = $_FILES ["file"]["name"];
if ($fichier){ // ouverture du fichier temporaire
$fp = fopen($_FILES["file"]["tmp_name"], "r");
}
else {// fichier inconnu ?>
<p align="center" >- importation echouee -</p>
<p align="center" >- <B> désole mais vous n'avez pas spécifié de chemin valide .. </B> </p>
<?php exit ();}
// declaration de la variable "cpt" qui permettera de compter le nombre de d'enregistrement réalisé
$cpt = 0; ?>
<p align="center">- Importation réussie -</p>
<?php //importation
while (!feof($fp)) {
$ligne = fgets ($fp,4096);
// on crée un tableau des élements séparés par des points virgules
$liste = explode(";", $ligne);
$table = filter_input(INPUT_POST, 'file');
// premier élement
$liste[0] = (isset($liste[0]) ) ? $liste[0] : null;
$liste[1] = (isset($liste[1]) ) ? $liste[1] : null;

$liste[2] = (isset($liste[2]) ) ? $liste[2] : null;

$liste[3] = (isset($liste[3]) ) ? $liste[3] : null;
$champ1=$liste[0];
$champ2=$liste[1];
$champ3=$liste[2];
$champ4=$liste[3];
if ($champ1!='')
{
$cpt++;

$db = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
$db_select= mysqli_select_db($db,"projet");
if (!$db_select)
{
die("Data Base Failed" . mysql_error());
}
$sql =("INSERT INTO test (id , type , pourcentage ,commentaire, date) VALUES ('','$champ1','$champ2','$champ3','$champ4')");
$result = $db-> query($sql);

} }
// fermeture du fichier
fclose ($fp);
?>
<h2> nombre de valeurs nouvellement enregistrees : </h2> <b> <?php echo $cpt; ?> </b>


message d'erreur :
Warning: mysqli_select_db() expects parameter 1 to be mysqli


merci bien de m'aider !
c'est pour une importation d'un fichier csv vers ma Base de donnés

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Erreur facile à trouver.....
$db = new PDO('

$db_select= mysqli_select_db

Que vient faire une instruction mysqli ici .... alors que tu as fais la connexion en PDO ??

Idem pour la ligne
die("Data Base Failed" . mysql_error())

mysql_error..... alors que tu es en PDO.... Non !


De plus, en PDO, merci d'appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
ca t'évitera de nombreux problèmes.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
PS: à l'avenir, merci de poster ton code correctement.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   2
 
<?php
extract(filter_input_array(INPUT_POST));
$fichier = $_FILES ["file"]["name"];
if ($fichier){ // ouverture du fichier temporaire
$fp = fopen($_FILES["file"]["tmp_name"], "r");
}
else {// fichier inconnu ?>
<p align="center" >- importation echouee -</p>
<p align="center" >- <B> désole mais vous n'avez pas spécifié de chemin valide .. </B> </p>
<?php exit ();}
// declaration de la variable "cpt" qui permettera de compter le nombre de d'enregistrement réalisé
$cpt = 0; ?>
<p align="center">- Importation réussie -</p>
<?php //importation
while (!feof($fp)) {
$ligne = fgets ($fp,4096);
// on crée un tableau des élements séparés par des points virgules
$liste = explode(";", $ligne);
$table = filter_input(INPUT_POST, 'file');
// premier élement
$liste[0] = (isset($liste[0]) ) ? $liste[0] : null;
$liste[1] = (isset($liste[1]) ) ? $liste[1] : null;

$liste[2] = (isset($liste[2]) ) ? $liste[2] : null;

$liste[3] = (isset($liste[3]) ) ? $liste[3] : null;
$champ1=$liste[0];
$champ2=$liste[1];
$champ3=$liste[2];
$champ4=$liste[3];
if ($champ1!='')
{
$cpt++;
// essaie avec la Function PDO
$db = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
// Activation des erreurs PDO
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

// fin de La function PDO





$sql =("INSERT INTO test (id , type , pourcentage ,commentaire) VALUES ($champ1','$champ2','$champ3','$champ4')");
$result = $db-> query($sql);

} }
// fermeture du fichier
fclose ($fp);
?>
<h2> nombre de valeurs nouvellement enregistrees : </h2> <b> <?php echo $cpt; ?> </b>

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '',steel,'john','commentaire')' at line 1' in C:\EasyPHP-Devserver-17\eds-www\import.php:48 Stack trace: #0 C:\EasyPHP-Devserver-17\eds-www\import.php(48): PDO->query('INSERT INTO tes...') #1 {main} thrown in C:\EasyPHP-Devserver-17\eds-www\import.php on line 48
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Dis voir.... j'ai deux questions essentielles qui me taraudent suite à nos précédents échanges......
Sais tu lire ?
Sais tu faire des copier/coller ?

Car bon... je t'ai donné à plusieurs reprises un lien concernant la façon de poster ton code sur le fourm.... et visiblement tu ne l'a pas lu ou ne l'a pas compris. Pourtant il est simple à comprendre.... Donc j'aimerai bien comprendre ce qui te bloque....

Et puis.. pour le PDO, dans le tuto il est clairement indiqué qu'il faut utiliser des blocs TRY/CATCH ... qu'en as tu fais ????

Pour finir... il suffit de voir le message d'erreur... de regarder à la ligne indiquée par l'erreur (ou à la ligne précédente)... et de te rendre compte de l'erreur dans ta requête SQL....
Un indice.. l'erreur se trouve dans :
INSERT INTO test (id , type , pourcentage ,commentaire) VALUES ($champ1','$champ2','$champ3','$champ4')

Je te laisse chercher... il n'y a que 12 mots... ça devrait aller
-1
garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   2
 
je sais lire et coder et copier coller si vous voulez et j'ai réussi a faire fonctionner tous grâce a mon raisonnement et aucun aide a été fourni de votre part car vous arrivez pas a résoudre le problème a part dire des trucs sur les gens
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
lorsqu'on te donne les réponses et que tu n'es pas capable de les appliquer..... ce n'est pas de notre faute quand même....
Si tu as réussi.. c'est le principal.... grâce à ton raisonnement... pourquoi pas... mais dis toi que tu aurais appliquer ce qu'on t'indique depuis le début, il n'aurait pas fallut autant de temps pour que ton code fonctionne ... et surtout éviter de me faire perdre mon temps ( j’appelle ça comme ça lorsque les gens réagissent comme tu le fais .... )


Bref... tu peux donc placer cette discussion en résolue.

Bonne continuation.
-1
garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   2
 
il faut comprendre le client mon ami et rester patient sa fait parti du travail et ne pas réagir de cette manière
Merci :)
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > garrix_du77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
1 - Je ne suis pas ton "ami"
2 - Tu n'es pas un client .... sinon pense à m'envoyer de l'argent !
3 - Il n'y a aucun "travail" ici... tout comme les utilisateurs de ce forum.. je suis bénévole. J'accorde de mon temps libre pour aider les internautes qui rencontrent des soucis..... à condition qu'ils le veuillent vraiment et fassent un minimum d'efforts...

Bref, je place cette discussion en résolue.
Bonne journée.
-1