[RESOLU] Catchable fatal error: Object of class PDOStatement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Catchable fatal error: Object of class PDOStatement

Re: [RESOLU] Catchable fatal error: Object of class PDOState

par xTG » 01 avr. 2014, 21:00

Tu peux enlever ton try..catch car le driver mysql ne renvoie aucune exception. ;)
Et par contre il serait temps de migrer ton code vers mysqli (mêmes fonctions que mysql mais avec un i) ou bien PDO.
Car le driver mysql n'est plus maintenu et donc n'est pas exempt de failles de sécurité.

Re: Catchable fatal error: Object of class PDOStatement

par Von_Kavalier » 01 avr. 2014, 08:57

Oui c'est bon, c'est parce que j'avais mal utilisé ma table en gros.
Voilà mon code pour ceux qui auraient le même problème :
<?php


try
{
	// On se connecte à MySQL
	//$bdd = new PDO('mysql:host=localhost;dbname=nb_personne', 'root', '');
	$bdd = mysql_connect('localhost','root');
	mysql_select_db('nb_personne');
}
catch(Exception $e)
{
	// En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
}

//$nb_personne = $bdd->query('SELECT * FROM nb_personne');//Récupération de ton nombre via base de donnée ou fichier (cf cours m@teo21 openclassroom)
$sql='SELECT * FROM nb_personne';
 $query = mysql_query($sql);
 $nb_personne= mysql_fetch_object($query);
 //echo 'TEST:'.count($nb_personne);
 //var_dump($nb_personne);
 
if (isset($_POST['plus'])) {

$nb_personne->compteur++;
   //On renvoi le nombre dans la base de donnée ou le fichier
  }
 else if(isset($_POST['moins'])){
   $nb_personne->compteur--;
   //On renvoi le nombre dans la base de donnée ou le fichier
}
//echo $nb_personne->compteur;


$sql='UPDATE nb_personne SET compteur='.$nb_personne->compteur.' WHERE id=1';
//UPDATE  `nb_personne`.`nb_personne` SET  `compteur` =  '42' WHERE  `nb_personne`.`id` =1;
$query = mysql_query($sql);
?>
//Et pour afficher
<?php echo $nb_personne->compteur?>

Re: Catchable fatal error: Object of class PDOStatement

par xTG » 28 mars 2014, 20:55

PDO::query te renvoie un objet sur lequel on peut itérer.
http://fr2.php.net/manual/en/pdo.query.php
L'exemple de la doc est assez incomplet mais montre le principe.

Le mieux serait de tester que le retour de la fonction n'est pas "false" puis de boucler dessus pour récupérer les informations.

Catchable fatal error: Object of class PDOStatement

par Von_Kavalier » 28 mars 2014, 16:08

Bonjour,
J'ai cette erreur Catchable fatal error: Object of class PDOStatement could not be converted to string
Sur ce code :
$nb_personne = $bdd->query('SELECT * FROM nb_personne');//Récupération de ton nombre via base de donnée ou fichier (cf cours m@teo21)
 
if (isset($_POST['plus'])) {

$nb_personne++;
   //On renvoi le nombre dans la base de donnée ou le fichier
  }
 else if(isset($_POST['moins'])){
   $nb_personne--;
   //On renvoi le nombre dans la base de donnée ou le fichier
}
echo $nb_personne;
   
J'ai lu que ce n'était pas un tableau de donnée mais un objet.
Bref totale incompréhension pour moi, comment pourrais-je afficher le contenu de la variable ?