IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Repérer erreur syntaxique : Try/Catch ou exit ?


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Repérer erreur syntaxique : Try/Catch ou exit ?
    Bonjour,



    Je suis actuellement le tuto sur PHP et je rencontre quelques soucis.

    J'essaie de gérer certaines erreurs.
    La première requête marche nickel , sauf que si je mets d'autres erreurs dans les autres requêtes , rien ne s'affiche ..

    Voici le code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    	<?php
     
    /* PDO est une extension orienté objet, donc ci $bdd est un objet représentant la connexion. La connexion n'a besoin d'être faite qu'une seule fois 
    	mysql correspond au data source name (DNS) . */
    	try 
    	{
    	$bdd=new PDO('mysql:host=localhost;dbname=test','uroot','');
    	}
     
    	/* En cas d'erreur, PDO renvoie une exception permettant de capturer l'erreur ( sinon cela affiche publiquement le mdp ou autres en cas d'erreur ( toute la ligne ) */	
    	catch(Exception $e)
    	{
    		die('Erreur : ' . $e->getMessage());
    	}
    	?>
    	<?php
    	$nom='PATRICK';
    	/* query signifie requête en anglais. $req contient maintenant toutes les infos MySql en vrac */
    	/* ci-dessous n'est pas à faire -> risque d'injection SQL */
    	$req=$bdd->query('Select nom,possesseur from jeux_video where upper(possesseur)=\'' . $nom . '\' order by 1 limit 5,5;') or exit(print_r($bdd->errorInfo()));
    	/*limit: premiere param : a partir de quel ligne , deuxieme param : le nombre de ligne */
     
    	/* fetch signifie va chercher. donnees est maintenant un array contenant champ par champ les valeurs de la première entrée */
    	/* $donnes=$req->fetch();  Nous renvoie la première ligne.
    		Il faut faire une boucle , et tant que l'on repète fetch ,fetch va chercher dans $req l'entrée suivante et organiser 
    		champs dans l'array $donnees */	
     
    	while($donnees=$req->fetch()) /* le fetch recupere une nouvelle entrée et place son contenu dans $donnees. Aussi elle vérifie si $donnees vaut vrai ou faux .fetch renvoie faux dans $donnees lorsqu'il arrive à la fin des données */
    	{
    		?>
    		<p>
    		<strong>Jeu : </strong> <?php echo $donnees['nom']; ?> 
    		. Il appartient a <em> <?php echo $donnees['possesseur']; ?> </em></p>
     
    	<?php } 
    		$req->closeCursor(); /* on signal qu'on a terminé le travail sur la requête  */
    	?>
     
    	<?php
    		echo '----------- Requete prepare --------<br/><br/>';
     
    		$newReq=$bdd->prepare('Select * from jeux_video where id < ? and prix > ? ') or exit(print_r($bdd->errorInfo()));
    		$newReq->execute(array($_GET['id'],$_GET['prix']));
     
    		while($donnees=$newReq->fetch())
    		{
    			echo '<li>' . $donnees['nom'] . ' au prix de ' . $donnees['prix'] . ' euros.</li>';
    		}
     
    		$newReq->closeCursor();
    	?>
     
    	<?php
    		echo '<br/><br/>----------- Requete nominatif --------<br/><br/>';
    		$secondReq=$bdd->prepare('Select * from jeux_video where nbre_joueurs_max = :nbrmax and prix < :prixmax')  or exit(print_r($bdd->errorInfo()));
    		$secondReq->execute(array('nbrmax' => $_GET['maxJ'], 'prixmax' => $_GET['maxP']));
    		while($newDonnees=$secondReq->fetch())
    		{
    		echo '<li>' . $newDonnees['nom'] . '<br/>';
    		}
    		$secondReq->closeCurseur();
     
     
    	?>
    J'ai déjà essayé les try/catch , mais sans succès.

    PS : Quand je dis erreur , c'est par exemple mettre jeuuuu_video à la place de jeux_video



    Merci d'avance

    Edit :

    Résolu en mettant pour les requêtes préparés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    or exit(print_r($newReq->errorInfo()) dans le execute
    Cependant, j'aurai aimé savoir pourquoi dans ma requête simple du début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=$bdd->query('Select nom,possesseur from jeux_video where upper(possesseur)=\'' . $nom . '\' order by 1 limit 5,5;') or exit(print_r($bdd->errorInfo()));
    Je suis obligé de mettre $bdd pour afficher l'erreur et non pas $nomRequete comme dans les requêtes préparés ?
    Dernière modification par Invité ; 17/07/2013 à 17h50.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Active tes erreurs PDO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    et retire tes affreux or exit

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je te remercie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des erreurs avec le try catch
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 8
    Dernier message: 03/03/2010, 10h22
  2. Code erreur d'un Try, Catch (exception e)
    Par davelop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/10/2008, 19h00
  3. Erreur, même dans un try-catch
    Par TheCool dans le forum C#
    Réponses: 3
    Dernier message: 06/03/2008, 19h26
  4. Réponses: 2
    Dernier message: 30/10/2007, 08h41
  5. Erreur de runtime sur un try ... catch
    Par Floréal dans le forum C++
    Réponses: 14
    Dernier message: 09/09/2005, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo