Qu'est-ce qui ne va pas dans mon PDO ?
Résolu
emrh
Messages postés
427
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous...
A chaque fois que je poste un petit bout de code, on me fait gentiment remarquer que je
n'utilise pas de la POO et que mes commandes "classiques" seront bientôt obsolètes.
Je me suis donc documenté et je reprends actuellement toutes mes requêtes pour utiliser
l'interface PDO.
Le problème est que ce qui fonctionnait bien avant PDO ne fonctionne plus maintenant !
Par exemple, cette insertion de données dans la table "menu_aliments" ne fonctionne pas, la
page reste bloquée sur un écran blanc et rien ne s'insert dans la table !
Merci d'avance pour votre aide !
Même avec un truc simple comme ça :
J'ai une erreur [HTTP/1.0 500 Internal Server Error 1ms] dans ma console Firefox dès que j'ajoute la ligne n°3 : $req = $bdd->query($sql);
A chaque fois que je poste un petit bout de code, on me fait gentiment remarquer que je
n'utilise pas de la POO et que mes commandes "classiques" seront bientôt obsolètes.
Je me suis donc documenté et je reprends actuellement toutes mes requêtes pour utiliser
l'interface PDO.
Le problème est que ce qui fonctionnait bien avant PDO ne fonctionne plus maintenant !
Par exemple, cette insertion de données dans la table "menu_aliments" ne fonctionne pas, la
page reste bloquée sur un écran blanc et rien ne s'insert dans la table !
<?php // Connexion à la base de données : try { $bdd = new PDO('mysql:host=localhost;dbname=locale','moi','pass',array(1002 => 'SET NAMES utf8')); } catch(PDOException $e) { echo 'La base de donnees n\'est pas accessible, veuillez reessayer plus tard !'; } // Préparation de la requête : $req = $bdd->prepare('INSERT INTO menu_aliments (aliment_nom,aliment_classe,aliment_unite,aliment_calorie,aliment_rayon) VALUES (:nom,:classe,:unite,:calorie,:rayon)'); // Préparation des données et envoi requête : $req->execute(array( 'nom' =>'POMME', 'classe' => 'FRUIT', 'unite' => 'gr', 'calorie' => '123', 'rayon' => 'FRUITS' )); ?>
Merci d'avance pour votre aide !
Même avec un truc simple comme ça :
<?php include ('connexion'); // Préparation de la requête : $sql = 'SELECT * FROM menu_aliments'; // Exécution de la requête : $req = $bdd->query($sql); echo 'Requête effectuée !'; ?>
J'ai une erreur [HTTP/1.0 500 Internal Server Error 1ms] dans ma console Firefox dès que j'ajoute la ligne n°3 : $req = $bdd->query($sql);
A voir également:
- Qu'est-ce qui ne va pas dans mon PDO ?
- En PDO modifier table partiellement ✓ - Forum MySQL
- Connection impossible par $bdd = new PDO ✓ - Forum PHP
- Erreur undefined method PDO fetch - Forum PHP
- Requête Update et Delete en PDO ✓ - Forum PHP
- [PDO]Lors de l'execution:SQLSTATE[HY000]: General error: ✓ - Forum PHP
3 réponses
Bonjour,
Déjà, tu sembles avoir oublié le .php dans ton include..
Ensuite,
essayes ça :
Déjà, tu sembles avoir oublié le .php dans ton include..
Ensuite,
essayes ça :
<?php // fichier connexion.php //---------------------------- // Connection au serveur try { $dns = 'mysql:host=localhost;dbname=locale'; $utilisateur = 'moi'; $motDePasse = 'pass'; $bdd = new PDO( $dns, $utilisateur, $motDePasse,array(PDO::ATTR_PERSISTENT => true,PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'') ); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch ( Exception $e ) { echo 'La base de donnees n\'est pas accessible, veuillez reessayer plus tard !'; echo "Connection à MySQL impossible : ", $e->getMessage(); die(); } ?>
// Fichier principal : <?php include_once('connexion.php'); // Préparation de la requête : $sql = 'SELECT * FROM menu_aliments'; // Exécution de la requête : $req = $bdd->execute($sql); if($req){ echo 'Requête effectuée !'; /* Récupération de toutes les lignes d'un jeu de résultats */ print("Récupération de toutes les lignes d'un jeu de résultats :\n"); $result = $sth->fetchAll(); print_r($result); }else{ echo "<br> ERREUR dans la requête.<br> ".$sql; } ?>
Oulalalala, bah j'va retourner me coucher moi ! ! !
Effectivement, ça fonctionne bien mieux si on appelle la bonne page avec la bonne
extension...
Je vous dit pas le temps que j'ai passé à chercher dans la requête alors que c'était 2 lignes au dessus !
Merci beaucoup jordane45...
Je vais essayer ton code pour la page de connexion...
C'est quoi : $result =
Effectivement, ça fonctionne bien mieux si on appelle la bonne page avec la bonne
extension...
Je vous dit pas le temps que j'ai passé à chercher dans la requête alors que c'était 2 lignes au dessus !
Merci beaucoup jordane45...
Je vais essayer ton code pour la page de connexion...
C'est quoi : $result =
$sth->fetchAll();?
J'ai marqué résolu, mais comment aurais-je pu gagner du temps en
faisant ressortir cette erreur grossière ?
Pourquoi n'ai-je pas eu un message d'erreur sur l'appel de la page ?
faisant ressortir cette erreur grossière ?
Pourquoi n'ai-je pas eu un message d'erreur sur l'appel de la page ?
Pourquoi n'ai-je pas eu un message d'erreur sur l'appel de la page ?
Car tu as utilisé simplement include ...
Et tu as surement paramétré ton serveur pour ne pas t'afficher toutes les erreurs ( Warning.. Notice...)
Tu peux inclure ceci en haut de ta page :
// Reporte toutes les erreurs PHP (Voir l'historique des modifications) error_reporting(E_ALL);
Toutes les infos sont disponibles ici : https://www.php.net/manual/fr/function.error-reporting.php
Mais avec un REQUIRE tu aurais eu un message d'erreur.
Pour le fetchall :https://www.php.net/manual/fr/pdostatement.fetchall.php
fetchAll -- Retourne un tableau contenant toutes les lignes du jeu d'enregistrements