Menu

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

ephelya 170 Messages postés mercredi 28 septembre 2011Date d'inscription 14 avril 2018 Dernière intervention - 12 juil. 2017 à 18:54 - Dernière réponse : jordane45 20624 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 avril 2018 Dernière intervention
- 12 juil. 2017 à 19:23
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 !
Afficher la suite 

3 réponses

Répondre au sujet
jordane45 20624 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 avril 2018 Dernière intervention - 12 juil. 2017 à 19:02
0
Utile
2
Bonjour
Car tu as deja fait un premier fetch... le second est donc naturellement vide
ephelya 170 Messages postés mercredi 28 septembre 2011Date d'inscription 14 avril 2018 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 ! :-)
jordane45 20624 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 avril 2018 Dernière intervention > ephelya 170 Messages postés mercredi 28 septembre 2011Date d'inscription 14 avril 2018 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)
Commenter la réponse de jordane45