Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2007, 01h53   #1
Futur Membre du Club
 
Inscription : juin 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 63
Points : 18
Points : 18
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 :
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 :
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 :

Citation:
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 !
WerKa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 11h35   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 11h44   #3
Futur Membre du Club
 
Inscription : juin 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 63
Points : 18
Points : 18
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 :

Citation:
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 :
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;">';
}
 
?>
WerKa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 14h51   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et en ajoutant :
Juste après :
Code :
$session = $sql->fetch(PDO::FETCH_ASSOC);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 15h19   #5
Futur Membre du Club
 
Inscription : juin 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 63
Points : 18
Points : 18
Ca marche ! merci
WerKa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h25.


 
 
 
 
Partenaires

Hébergement Web