Signaler

C'est moi qui devient folle ? [Résolu]

Posez votre question ephelya 157Messages postés mercredi 28 septembre 2011Date d'inscription 21 juillet 2017 Dernière intervention - Dernière réponse le 12 juil. 2017 à 19:23 par jordane45
Bonjour à tous,

Voici ma requête SQL toute simple :
		$ip = $_SERVER["REMOTE_ADDR"];
		$now = time();
		try{
		$db = new \PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME.'; charset=utf8', DB_USER, DB_PASSWORD);
		 $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
		 $db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
		} catch(PDOException $e) {
		    die('Erreur : ' . $e->getMessage());
		}

		$query = "SELECT iduser FROM  temp_connect WHERE ip=:ip AND :now < (datemax + 3600)"; 
		$datas = array(':ip'=>$ip, ':now' => $now);

		try{
		  $requete = $db -> prepare($query) ;
		  $requete->execute($datas) ; print_r($requete -> fetchAll());
		  $result =$requete -> fetchAll(); print_r($result); 
			if (!empty($result)) 
			{
		              $user = \Models\Membres::get_user($result[0] -> iduser);
			      return($user);			
			}	
			else { return false; }
		}catch(Exception $e){
		   echo " Erreur ! ".$e->getMessage();
		   echo " Les datas : " ;
		}


Sur l'écran, voilà ce que j'obtiens :
Array ( [0] => stdClass Object ( [iduser] => 431 ) ) Array ( ) 

Je devrais avoir deux fois le même résultat, alors pourquoi print_r($result) retourne un tableau vide ???
Ça me rend dingue, alors si quelqu'un a une piste...
Merci d'avance !
Utile
+0
plus moins
Bonjour
Car tu as deja fait un premier fetch... le second est donc naturellement vide
ephelya 157Messages postés mercredi 28 septembre 2011Date d'inscription 21 juillet 2017 Dernière intervention - 12 juil. 2017 à 19:07
Ahhhhh... :-) -) :-)
Je croyais que fetch servait simplement à indiquer le contenu, je ne savais pas qu'on ne pouvait pas l'utiliser deux fois de suite...
Merci beaucoup ! :-)
Répondre
jordane45 18319Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 25 septembre 2017 Dernière intervention - 12 juil. 2017 à 19:23
Ca lit le jeu d'enregistrements de ta requette.
Le fetchall deplace le curseur jusqu'au dernier (pour tout lire)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !