[PDO]Call to a member function prepare() [Résolu/Fermé]

Signaler
Messages postés
70
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
19 août 2010
-
Messages postés
70
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
19 août 2010
-
Bonjour,

je suis en train de réaliser un site en PHP et j'utilise également PDO pour travailler avec une base de donner.

Le problème est que j'ai un message d'erreur qui s'affiche :
Fatal error: Call to a member function prepare() on a non-object in /home/users/00/16/f6/home/www/projet_2/includes/haut.php on line 73

Voici le code des lignes 73 à 81 :
  
try 
{ 
  
 $bdd = new PDO('mysql:host=xxxxxxx;dbname=xxxxxxxx',      
        xxxxxxx, xxxxxxxxxxxxxx); 
   
} 
catch (Exception $e) 
{ 

 die('Erreur : ' . $e->getMessage()); 

} 
   
$req1 = $bdd->prepare('INSERT INTO forum_whosonline(online_id, online_time, online_ip) VALUES(:id, :time, :ip)  
  ON DUPLICATE KEY UPDATE  
  online_time = :time , online_id = :id') or die(print_r($bdd->errorInfo()));  
    
$req1->execute(array(  
 'id' => $id,  
 'time' => time(),  
 'ip' => $ip  
 ));


Comment résoudre ce problème ?


Merci de votre aide
A voir également:

4 réponses

Messages postés
18490
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
4 247
Tu n'as pas correctement instancié PDO.
Et le "or die" on s'en passerait bien, PDO permet l'affichage des erreurs via des exceptions (try ... catch).
Messages postés
70
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
19 août 2010
13
Bonjour et merci de votre réponse,

si vous parler de ce morceau de code que j'ai omis de poster, je ne vois pas où est le problème :
	try
	{
	
		$bdd = new PDO('mysql:host='.$bd_nom_serveur.';dbname='.$bd_nom_bd, $bd_login, $bd_mot_de_passe);
		$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
	
	}
	catch(Exception $e)
	{
	
			die('Erreur : '.$e->getMessage());
	
	}


Merci de votre réponse
Messages postés
70
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
19 août 2010
13
Personne ne peut m'aider ???
Messages postés
70
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
19 août 2010
13
Bonjour,
je viens enfin de comprendre d'où venait mon problème. :-°

j'ai créer une fonction pour me connecté à ma base de donnée sans avoir besoin de tout retapé :

<?php
function connexionbdd($bd_nom_bd)
{	
	
	//Définition des variables de connexion à la base de données
	$bd_nom_serveur='xxxx';
	$bd_login='xxxx';
	$bd_mot_de_passe='xxxxx';
	
	try
	{
	
		$bdd = new PDO('mysql:host='.$bd_nom_serveur.';dbname='.$bd_nom_bd, $bd_login, $bd_mot_de_passe);
	
	}
	catch(Exception $e)
	{
	
			die('Erreur : '.$e->getMessage());
	
	}

}?>


En fait, j'avais oublier de retourné la valeur de <?php $bdd ?> .

J'ai donc rajouté <?php return $bdd; ?> .

Comme quoi, il ne faut pas toujours cherché très loin.

Merci à tous de m'avoir aider à résoudre mon problème.