Qu'est-ce qui ne va pas dans mon PDO ?

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié par jordane45 le 9/12/2014 à 09:30
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 9 déc. 2014 à 14:20
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 !

<?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);



3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
9 déc. 2014 à 10:44
Bonjour,
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;
}
?>


0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
9 déc. 2014 à 13:48
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 =
$sth->fetchAll();
?
0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié par emrh le 9/12/2014 à 14:13
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 ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
9 déc. 2014 à 14:20
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
0