Activation des erreur PDO
Résolu/Fermé
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
-
Modifié par flo39400 le 19/10/2016 à 15:19
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 20 oct. 2016 à 15:50
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 20 oct. 2016 à 15:50
A voir également:
- Activation des erreur PDO
- Erreur 0x80070643 - Accueil - Windows
- Clé d'activation windows 10 gratuit - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Erreur 1001 outlook - Accueil - Bureautique
6 réponses
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
19 oct. 2016 à 15:25
19 oct. 2016 à 15:25
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
19 oct. 2016 à 15:31
19 oct. 2016 à 15:31
D'après ce que je voie je me dit que l'erreur viens de la:
$req_statut = $bdd->prepare('SELECT statut_ip FROM bann_ip WHERE uttilisateur_ip = ?'); $req_statut->execute(array($user_ip)); $statut = $req_statut->fetch();
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
19 oct. 2016 à 15:34
19 oct. 2016 à 15:34
sûrement...
Mais tu n'as pas répondu (pris en compte) mes autres questions/remarques ...
Mais tu n'as pas répondu (pris en compte) mes autres questions/remarques ...
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
19 oct. 2016 à 15:38
19 oct. 2016 à 15:38
Si mais j'ai répondu avant de voir votre réponse... désolé :/
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
Modifié par flo39400 le 19/10/2016 à 15:36
Modifié par flo39400 le 19/10/2016 à 15:36
Try/Catch ? J'ai jamais utiliser ça.
J'ai utiliser rowCount() car sur les tuto que je regarde il l’utilise voila pourquoi vu que le code fonctionner je me suis dit super ça marche.
Alors j'ai mis pleins de truc comme ça partout...
La galère alors...
CObdd.php donc la je me connecte a ma base de données.
J'ai utiliser rowCount() car sur les tuto que je regarde il l’utilise voila pourquoi vu que le code fonctionner je me suis dit super ça marche.
Alors j'ai mis pleins de truc comme ça partout...
La galère alors...
CObdd.php donc la je me connecte a ma base de données.
<?php session_start(); try{ $bdd = new PDO('mysql:host=127.0.0.1;dbname=ma_base_news; charset=utf8', 'root', ''); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
19 oct. 2016 à 15:43
19 oct. 2016 à 15:43
J'ai utiliser rowCount() car sur les tuto que je regarde il l’utilise voila pourquoi vu que le code fonctionner je me suis dit super ça marche.
Alors j'ai mis pleins de truc comme ça partout...
... dans ta question précédente... (que nous venons de traiter....) il était déjà question de ça.
https://forums.commentcamarche.net/forum/affich-34010808-compte-le-nombre-de-commentaire#1
Ce n'est pas parce-que certaines personnes ne savent pas lire le manuel PHP et marquent n'importe quoi dans leurs pseudo tutos qu'il faut bêtement faire les mêmes erreurs....
Try/Catch ? J'ai jamais utiliser ça.
C'est dans le lien sur l'activation des erreurs PDO que je t'ai donné...
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et puis... si il y a quelque chose que tu ne sais pas faire (ou ne comprend pas).. tu as la possibilité de trouver les infos dans le manuel php :
Par exemple : http://php.net/manual/fr/language.exceptions.php
Vu qu'on en est aux bonnes pratiques.... un bloc IF / ELSE .. la norme PSR2 propose de l'écrire comme ceci :
if(condition){ //action si vrai }else{ //action si faux }
Ce n'est pas une obligation bien sûr... mais je trouve ça plus lisible...
Lien vers la norme PS2 : https://www.php-fig.org/psr/psr-2/
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
Modifié par flo39400 le 19/10/2016 à 16:17
Modifié par flo39400 le 19/10/2016 à 16:17
J'arrive a utiliser if et else.
Mais je les écrit souvent comme ça:
Après si vous me dites que sais mieux de faire comme ça bas je le ferrai.
Donc TRY/CATCH sert a traquer les erreur dans le code.
Si un des bloque pose problème ça m'indiquera un message associé, comme ça je saurai d’où vient l'erreur directement .
Mais je les écrit souvent comme ça:
if(condition) { // action si vrai } else { //action si faux }
Après si vous me dites que sais mieux de faire comme ça bas je le ferrai.
Donc TRY/CATCH sert a traquer les erreur dans le code.
Si un des bloque pose problème ça m'indiquera un message associé, comme ça je saurai d’où vient l'erreur directement .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
19 oct. 2016 à 15:44
19 oct. 2016 à 15:44
Donc si j'ai bien compris le rowCount() je le remplace par fetchColumn() et avant je met un query(SELECT COUNT(*)
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
19 oct. 2016 à 15:48
19 oct. 2016 à 15:48
par exemple.
Tu peux aussi faire un fetchAll
puis faire un COUNT dessus
par exemple :
Tu peux aussi faire un fetchAll
puis faire un COUNT dessus
par exemple :
$sql = "SELECT * FROM tatable WHERE tesconditions.."; try{ $prep = $bdd->prepare($sql); $prep->execute(); }catch(Exception $e){ echo "Erreur : ".$e->getMessage(); } $result = $prep->fetchAll(); $nbRows = count($result);
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
19 oct. 2016 à 16:08
19 oct. 2016 à 16:08
Merci pour tous cela, mais je doit me documenté sur l’utilisation des prepare, query et les requêtes associé car je sais pas quand les utiliser.
Et aussi savoir quand utiliser fetch, fetchAll, fetchColumn(), execute,.....
Car vraiment c'est handicapent de devoir a chaque fois demander de l'aide et comme sais compliquer de trouver des choses a jours.
Le manuel Php le problème sais que je comprend pas les exemple données donc je suis souvent a la rue :/
Et aussi savoir quand utiliser fetch, fetchAll, fetchColumn(), execute,.....
Car vraiment c'est handicapent de devoir a chaque fois demander de l'aide et comme sais compliquer de trouver des choses a jours.
Le manuel Php le problème sais que je comprend pas les exemple données donc je suis souvent a la rue :/
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
20 oct. 2016 à 14:40
20 oct. 2016 à 14:40
Bonjour, voila je viens de travailler sur mon code voici les modifications apporter:
<?php $user_ip = $_SERVER['REMOTE_ADDR']; $sql1 = "SELECT * FROM bann_ip WHERE uttilisateur_ip = ?"; try{ $prep1 = $bdd->prepare($sql1); $prep1->execute(array($user_ip)); }catch(Exception $e1){ echo "Erreur : ".$e1->getMessage(); } $result1 = $prep1->fetchAll(); $ip_existe = count($result1); if($ip_existe == 0) { $sql2 = "INSERT INTO bann_ip(uttilisateur_ip, date_time_co) VALUES(?, NOW())"; try{ $prep2 = $bdd->prepare($sql2); $prep2->execute(array($user_ip)); }catch(Exception $e2){ echo "Erreur : ".$e2->getMessage(); } } else { $update_ip = "UPDATE bann_ip SET date_time_co = NOW() WHERE uttilisateur_ip = ?"; try{ $update_ip_prep = $bdd->prepare($update_ip); $update_ip_prep->execute(array($_SERVER['REMOTE_ADDR'])); }catch(Exception $e3){ echo "Erreur : ".$e3->getMessage(); } } $req_statut = "SELECT statut_ip FROM bann_ip WHERE uttilisateur_ip = ?"; try{ $prep_req_statut = $bdd->prepare($req_statut); $prep_req_statut->execute(array($user_ip)); }catch(Exception $e4){ echo "Erreur : ".$e4->getMessage(); } $statut = $prep_req_statut->fetch(); ?>
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
20 oct. 2016 à 15:02
20 oct. 2016 à 15:02
tu n'es pas obligé de modifier le nom des variable $e dans les catch.
Tu peux laisser tout le temps le même ce n'est pas un souci.
Tu peux laisser tout le temps le même ce n'est pas un souci.
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
20 oct. 2016 à 15:07
20 oct. 2016 à 15:07
A ok merci, euh sais bon j'ai trouvé le problème ça vient de fetch, la je suis trop contant car j'ai trouvé en cherchant tout seul :D
Donc faut ajouter ça: PDO::FETCH_ASSOC a la méthode fetch je sais pas ce que sais mais ça fonctionne mieux car pu de message d'erreur.
<?php $user_ip = $_SERVER['REMOTE_ADDR']; $sql1 = "SELECT * FROM bann_ip WHERE uttilisateur_ip = ?"; try{ $prep1 = $bdd->prepare($sql1); $prep1->execute(array($user_ip)); }catch(Exception $e1){ echo "Erreur : ".$e1->getMessage(); } $result1 = $prep1->fetchAll(); $ip_existe = count($result1); if($ip_existe == 0) { $sql2 = "INSERT INTO bann_ip(uttilisateur_ip, date_time_co) VALUES(?, NOW())"; try{ $prep2 = $bdd->prepare($sql2); $prep2->execute(array($user_ip)); }catch(Exception $e2){ echo "Erreur : ".$e2->getMessage(); } } else { $update_ip = "UPDATE bann_ip SET date_time_co = NOW() WHERE uttilisateur_ip = ?"; try{ $update_ip_prep = $bdd->prepare($update_ip); $update_ip_prep->execute(array($_SERVER['REMOTE_ADDR'])); }catch(Exception $e3){ echo "Erreur : ".$e3->getMessage(); } } $req_statut = "SELECT statut_ip FROM bann_ip WHERE uttilisateur_ip = ?"; try{ $prep_req_statut = $bdd->prepare($req_statut); $prep_req_statut->execute(array($user_ip)); }catch(Exception $e4){ echo "Erreur : ".$e4->getMessage(); } $statut = $prep_req_statut->fetch(PDO::FETCH_ASSOC); ?>
Donc faut ajouter ça: PDO::FETCH_ASSOC a la méthode fetch je sais pas ce que sais mais ça fonctionne mieux car pu de message d'erreur.
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
20 oct. 2016 à 15:16
20 oct. 2016 à 15:16
Pour info:
PDO::FETCH_BOTH (mode par défaut) équivaut à mysql_fetch_array : chaque valeur d'une ligne est présente deux fois sous deux clés différentes : le nom de la colonne correspondante et son index dans le jeu de résultat (0 pour la première, 1 pour la seconde, etc)
PDO::FETCH_ASSOC équivaut à mysql_fetch_assoc : chaque valeur d'une ligne n'est présente qu'une fois via le nom de la colonne correspondante
PDO::FETCH_NUM équivaut à mysql_fetch_row : les valeurs d'une ligne ne sont que numériquement indexées
PDO::FETCH_BOTH (mode par défaut) équivaut à mysql_fetch_array : chaque valeur d'une ligne est présente deux fois sous deux clés différentes : le nom de la colonne correspondante et son index dans le jeu de résultat (0 pour la première, 1 pour la seconde, etc)
PDO::FETCH_ASSOC équivaut à mysql_fetch_assoc : chaque valeur d'une ligne n'est présente qu'une fois via le nom de la colonne correspondante
PDO::FETCH_NUM équivaut à mysql_fetch_row : les valeurs d'une ligne ne sont que numériquement indexées
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
>
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20 oct. 2016 à 15:25
20 oct. 2016 à 15:25
Il suffisait de le modifier ici (dans la connexion à ta BDD)
par :
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ)
par :
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC)
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
>
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
20 oct. 2016 à 15:47
20 oct. 2016 à 15:47
je vais tester ça bon je me heurte a un autre problème... :/