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 :

Problème lors d'un INSERT ou un DELETE [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut Problème lors d'un INSERT ou un DELETE
    Salut à tous,

    J'ai suivi le tuto suivant : http://a-pellegrini.developpez.com/t...b/?page=page_4 pour gérer mes sessions...
    J'ai donc une fonction openSession notamment, dans laquelle je commence par supprimer l'ancienne session d'un utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	// On supprime la session en cours
    	$deleteSQL = $db->prepare('DELETE FROM sessions
    					WHERE userid = :userid');
    	$deleteSQL->execute(array(':userid' => $userid))or die("Erreur openSession()");;
    Ceci marche parfaitement bien... Or, quand je copie/colle le MEME code dans la fonction closeSession :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$deleteSQL = $db->prepare('DELETE FROM sessions
    					WHERE userid = :userid');
    	$deleteSQL->execute(array(':userid' => $session['userid']))or die("ERREUR".mysql_error().'.');
    ($session['userid'] marche, j'ai vérifié), il le fait pas, et exécute le die, avec aucune erreur mysql écrite :

    ERREUR.
    Est-ce que quelqu'un a une idée d'où vient le problème svp ? J'ai par ailleurs remarqué que ça faisait la même chose avec un INSERT... Alors que le SELECT marche parfaitement bien :\

    Merci d'avance !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    1. Le tableau $session il sort d'où exactement ? Pourriez-vous nous mettre le code complet de la fonction/méthode après vos modifications ainsi que votre appel à celle-ci (avec les autres éléments nécessaires si besoin) ?
    2. Pour afficher le message d'erreur il faudrait plutôt utiliser PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!$deleteSQL->execute(array(':userid' => $userid))) {
        print_r($deleteSQL->errorInfo());
    }
    Que mysql_error puisque ce n'est pas l'extension MySQL qui est employée dans l'article.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Merci pour votre réponse

    Effectivement, avec l'affichage que vous écrivez, c'est mieux (je n'ai jamais utilisé PDO jusqu'ici)

    Ca nous donne :

    Array ( [0] => HY000 [1] => 2014 [2] => Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. )
    Concernant les autres questions : le $session c'est le résultat d'une requête "SELECT" sur la table des sessions... Pour le code complet, ça donne :

    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
    function closeSession() {
    	global $db;
    	$sql = $db->prepare('SELECT sid, userid, heure, ip
    				FROM sessions
    				WHERE sid =:sid');
     
    	$sql->execute( array(':sid' => session_id()) ) ;
     
    	$session = $sql->fetch(PDO::FETCH_ASSOC);
     
    //	$deleteSQL->execute( array(':sid' => session_id()) ) or die ("ERREUR : ".mysql_error().".");
    	$deleteSQL = $db->prepare('DELETE FROM sessions
    					WHERE userid = :userid');
    	$deleteSQL->execute(array(':userid' => $session['userid']));
    	if (!$deleteSQL->execute(array(':userid' => $session['userid']))) {
        print_r($deleteSQL->errorInfo());
    }
     
     
    	//echo '<meta http-equiv="Refresh" content="0;">';
    }
     
    ?>

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Et en ajoutant :
    Juste après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session = $sql->fetch(PDO::FETCH_ASSOC);

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Ca marche ! merci

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

Discussions similaires

  1. [SQL] Problème lors de l'insertion d'un enregistrement dans ma base de données.
    Par Velkan.nexus dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2007, 11h59
  2. Problème lors de l'insertion de données
    Par galoi81 dans le forum Oracle
    Réponses: 14
    Dernier message: 30/07/2007, 16h10
  3. [VB 2005][SQL SERVER]Problème lors de l'insert
    Par LauBelette dans le forum Accès aux données
    Réponses: 4
    Dernier message: 26/12/2006, 03h59
  4. Réponses: 3
    Dernier message: 26/04/2006, 08h16
  5. [JDesktopPane] Problème lors de l'insertion d'une JInternalFrame
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 21/09/2005, 01h38

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