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 :

Fatal error: Call to a member function closeCursor() on a non-object


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut Fatal error: Call to a member function closeCursor() on a non-object
    Bonjour, comme dans le titre, j'ai rencontré l'erreur :
    Fatal error: Call to a member function closeCursor() on a non-object in /home/basededonnees/public_html/faq.php on line 83
    Je suis débutant, mais j'ai lu que apparement il fallait mettre closeCursor() à la fin de chaque requête, je croyais l'avoir fait, mais ce message d'erreur me porte à penser le contraire
    PS : J'ai refermé l'accolade du "if (0 === sizeof($aListeErreurs))" juste au dessus du closeCursor() et je ne sais pas si c'est le bon endroit...

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     <?php
     
      // Le pseudo est-il rempli ?
      if (empty($_POST['pseudo']))
      {
        $aListeErreurs[] = 'Veuillez indiquer votre pseudo';
      }
     
    	// Le message est-il rempli ?
      if (empty($_POST['message']))
      {
        $aListeErreurs[] = 'Veuillez indiquer votre message';
      }
     
    	// Si aucune erreur n'a été générée
      // On enregistre le message dans la BDD
      if (0 === sizeof($aListeErreurs))
      {
     
     
      try
      {
    	$bdd = new PDO('mysql:host=mysql.hostinger.fr;dbname=basededonnees;charset=utf8', 'user', 'mdp');
      }
        catch(Exception $e)
      {
            die('Erreur : '.$e->getMessage());
      }
     
      // Insertion du message à l'aide d'une requête préparée
      $req = $bdd->prepare('INSERT INTO chat (pseudo, message) VALUES(pseudo, message)');
      $req->execute(array($_POST['pseudo'], $_POST['message']));
     
     
     
      // Récupération des 50 derniers messages
      $reponse = $bdd->query('SELECT pseudo, message FROM chat ORDER BY ID DESC LIMIT 0, 50');
     
      // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
      while ($donnees = $reponse->fetch())
      {
    	echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
      }
     
    }
    $reponse->closeCursor();
     
     
    ?>

    Merci pour vos réponses !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le closecursor ne peut evidemment se faire que si la requête a été faite. Donc il doit être avant le dernier }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Merci de ta réponse ! Mais je ne sais pas trop comment insérer des conditions sans tout faire sauter...

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Peut-être qu'une indentation propre de ton code avec http://phpbeautifier.com/ t'aiderait à y voir plus clair dans ton code
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Merci beaucoup mais je n'ai pas très bien compris à quoi cela me servait-il ?

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu passes ton code dans le site indiqué par Watilin, ça donne ça :
    Code : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     <?php
     
    // Le pseudo est-il rempli ?
     
    if (empty($_POST['pseudo'])) {
    	$aListeErreurs[] = 'Veuillez indiquer votre pseudo';
    }
     
    // Le message est-il rempli ?
     
    if (empty($_POST['message'])) {
    	$aListeErreurs[] = 'Veuillez indiquer votre message';
    }
     
    // Si aucune erreur n'a été générée
    // On enregistre le message dans la BDD
     
    if (0 === sizeof($aListeErreurs)) {
    	try {
    		$bdd = new PDO('mysql:host=mysql.hostinger.fr;dbname=basededonnees;charset=utf8', 'user', 'mdp');
    	}
     
    	catch(Exception $e) {
    		die('Erreur : ' . $e->getMessage());
    	}
     
    	// Insertion du message à l'aide d'une requête préparée
     
    	$req = $bdd->prepare('INSERT INTO chat (pseudo, message) VALUES(pseudo, message)');
    	$req->execute(array(
    		$_POST['pseudo'],
    		$_POST['message']
    	));
     
    	// Récupération des 50 derniers messages
     
    	$reponse = $bdd->query('SELECT pseudo, message FROM chat ORDER BY ID DESC LIMIT 0, 50');
     
    	// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
     
    	while ($donnees = $reponse->fetch()) {
    		echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    	}
    }
     
    $reponse->closeCursor();
    ?>
    Ce qui te permet de voir que tu utilises $reponse à l'extérieur du bloc dans lequel il est défini. Tu as donc juste à remonter $reponse->closeCursor(); à l'intérieur du bloc ouvert par if (0 === sizeof($aListeErreurs)) {.

    @Watilin : chouette site , ça va m'éviter d'avoir à ouvrir mon EDI pour comprendre le code des posts mal indentés.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Ah ok merci !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Aucun rapport et je vais sûrement me faire tuer mais comment insère-t-on du javascript dans du php ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else {
    <script type ="text/javascript">alert('Veuillez insérer votre pseudo')</script>;
    }
    Mais ça me met : Parse error: syntax error, unexpected '<' in /home/u926959848/public_html/faq.php on line 75
    Aidez moi svp

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    c'est simple : on peut entrer/sortir du code PHP en ouvrant/fermant les balises <?php et ?> :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    //...
     
    else {
    ?>
    <script type ="text/javascript">alert('Veuillez insérer votre pseudo')</script>
    <?php
    }

Discussions similaires

  1. Fatal error: Call to a member function closeCursor() on a non-object
    Par stade13 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/12/2011, 19h15
  2. Réponses: 4
    Dernier message: 07/10/2009, 11h53
  3. Réponses: 4
    Dernier message: 02/10/2009, 10h12
  4. [PDO] Fatal error: Call to a member function setFetchMode() on a non-object in
    Par tores20 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 23h04
  5. [PHP 5.2] Fatal error: Call to a member function bindValue() on a non-object
    Par TeraD dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2009, 00h20

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