C'est moi qui devient folle ?

Résolu/Fermé
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 12 juil. 2017 à 18:54
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 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 !

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 juil. 2017 à 19:02
Bonjour
Car tu as deja fait un premier fetch... le second est donc naturellement vide
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
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 ! :-)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023
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)
0