[PDO]Call to a member function prepare()

Résolu
leptitjeune Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
leptitjeune Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
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

leptitjeune Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   14
 
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.
1
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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).
0
leptitjeune Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   14
 
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
0
leptitjeune Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   14
 
Personne ne peut m'aider ???
0