IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

rowCount non reconnu [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut rowCount non reconnu
    Bonjour à tous,

    Petit incompréhension de ma part.
    Lorsque je souhaite utiliser la méthode rowCount de l'objet de type pdostatement, j'obtiens le message d'erreur suivant :

    Code ERREUR : Sélectionner tout - Visualiser dans une fenêtre à part
     Call to a member function rowCount() on a non-object in

    Pour le code php suivant :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /* création de la connexion à la BD */
    $bdgrr = connectGrr();
    /* création de la requête */
    $requete = $bdgrr->prepare('SELECT id FROM grr_entry WHERE room_id = :idroom AND ((start_time BETWEEN :debut AND :fin) OR (end_time BETWEEN :debut AND :fin))');
    /* parcours de chaque élément du tableauvisite */
    foreach( $tableauvisite as $key => $atelier ){
    	if( $atelier["visite"]==1){ /* on recherche seulement si l'atelier est demandé */
    		$resultat = $requete->execute(array(
    					'idroom' => $atelier["id"],
    					'debut'  => $atelier["hd"],
    					'fin'    => $atelier["hf"]
    					));
    		if( $key > 0 ) $erreur .= ',';
    		if( $resultat == true && $resultat->rowCount() > 0 ){
    			$atelier["dispo"] = 1;
    		}
    		else{
    			$atelier["dispo"] = 0;
    			$erreur .= $atelier["id"];
    		}
    	}
    }

    Et pourtant la semaine, lorsque j'ai demandé sur ce forum comment je pouvais procéder pour vérifier que la requête me retourne quelque chose, on m'a conseillé de procéder ainsi.

    Est ce que je n'ai pas compris quelques choses dans les explications que l'on m'a fournies la semaine passée ?

    En vous remerciant pour toute l'aide que vous pouvez m'accorder.
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    active la gestion des erreurs pour PDO :
    http://php.net/manual/fr/pdo.error-handling.php

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Je ne sais pas si cela peut avoir une quelconque importance, mais les fonction permettant de créer les connexions à mes serveurs de BD se trouvent dans un autre fichier que j'include une fois la vérification d'exactitude des données terminées.

    Je remarque également que l'erreur se produit au niveau de la requête utilisant une partie de code dont je ne suis pas certain à vrai dire. Les valeurs se trouvant dans $atelier["hd"] et $atelier["hf"] sont des valeurs numériques unix time.
    J'ai il y a moins d'une demi heure retravailler la création de ce unix time, peut être est-ce du à cela.

    Voici donc le message d'erreur que j'obtiens
    Code ERREUR : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <br />
    <b>Fatal error</b>:  Call to a member function rowCount() on a non-object in <b>/chemin/de/mon/fichier/inc/verification.php</b> on line <b>143</b><br />

    Et la ligne 143 est la ligne :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $resultat == true && $resultat->rowCount() > 0 ){

    Des idées ?
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    oui activer les erreurs, si tu les active pas tu risques pas de voir ou est le problème...

  5. #5
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Mais les erreurs sont activées... ?!

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    /* fichier data.php */
    function connectMalmundarium(){
    	/* données de connexion à la BDD */
    	$serveraddr = "monIP";
    	$servername = "bdname2";
    	$username = "bduser2";
    	$passwd = "bdpass2";
     
    	try{
    		$bdd = new PDO('mysql:host='.$serveraddr.';dbname='.$servername, $username, $passwd);
    		$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    		$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    		return $bdd;
    	}
    	catch( Exception $e){
    		die('Erreur : '.$e->getMessage());
    	}
    }
     
    function connectGrr(){
    	/* données de la connexion à la BDD */
    	$grraddr = "monIP";
    	$grrname = "bdname";
    	$grruser = "bduser";
    	$grrpwd  = "bdpass";
     
    	try{
    		$grrbdd = new PDO('mysql:host='.$grraddr.';dbname='.$grrname, $grruser, $grrpwd);
    		$grrbdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    		$grrbdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    		return $grrbdd;
    	}
    	catch(Exception $e){
    		die('Erreur : '.$e->getMessage());
    	}
    }

    Et en fait, le fichier dans lequel j'ai le code du premier post, est appelé par l'intermédiaire d'un appel AJAX/Javascript. Voici pour rappel la portion de code posant problème :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /* création de la connexion à la BD */
    $bdgrr = connectGrr();
    /* création de la requête */
    $requete = $bdgrr->prepare('SELECT id FROM grr_entry WHERE room_id = :idroom AND ((start_time BETWEEN :debut AND :fin) OR (end_time BETWEEN :debut AND :fin))');
    /* parcours de chaque élément du tableauvisite */
    foreach( $tableauvisite as $key => $atelier ){
    	if( $atelier["visite"]==1){ /* on recherche seulement si l'atelier est demandé */
    		$resultat = $requete->execute(array(
    					'idroom' => $atelier["id"],
    					'debut'  => $atelier["hd"],
    					'fin'    => $atelier["hf"]
    					));
    		if( $key > 0 ) $erreur .= ',';
    		if( $resultat == true && $resultat->rowCount() > 0 ){
    			$atelier["dispo"] = 1;
    		}
    		else{
    			$atelier["dispo"] = 0;
    			$erreur .= $atelier["id"];
    		}
    	}
    }
    if( $erreur != "" ){
    	echo $erreur;
    	exit;
    }
    $requete->closeCursor();
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi mettre : PDO::ERRMODE_WARNING + PDO::ERRMODE_EXCEPTION

    sinon c'est : $requete->rowCount() et pas $resultat->rowCount()

    execute ne renvoie qu'un booléen : http://www.php.net/manual/fr/pdostatement.execute.php

  7. #7
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Bon, il est temps que je me sorte la tête du :derriere:

    Merci, j'ai un autre soucis à présent mais plus rien à voir avec du SGBD. Il me retourne un message 1415 o_O

    Encore merci pour l'aide accordée.

    [EDIT] Je viens de voir ce que sont mes retours 1415. Les codes de mes ressources à réserver ;-) [/EDIT]
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lomboz] [JBoss] JBoss 3.2.6 non reconnu par Lomboz ?
    Par romain3395 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 17/12/2004, 16h35
  2. Commandes non reconnues.
    Par Manu' dans le forum Administration système
    Réponses: 3
    Dernier message: 07/10/2004, 17h09
  3. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52
  4. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28
  5. xslt_create() non reconnu
    Par BRAUKRIS dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/12/2003, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo