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

SQLite Discussion :

PDO ne renvoie pas d'erreur si l'enregistrement n'existe pas


Sujet :

SQLite

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut PDO ne renvoie pas d'erreur si l'enregistrement n'existe pas
    Bonjour,

    Sur SQLITE avec PDO, j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $SQL="UPDATE Users SET 'valide' = '1' WHERE valide='$Code'";    
        $db_handle = new PDO('sqlite:'. _DATABASE_NAME);
        $req = $db_handle->prepare($SQL);
        $count=$req->execute(NULL);
    $Code = "qjskhdfkqsdfghqsdjfghbq" par exemple.

    Je sais que l'enregistrement n'existe pas, et que donc la requête ne met pas à jour ce qui n'existe pas. Mais je n'ai aucun message d'erreur. Je ne sais pas que l'enregistrement n'existe pas avec la valeur de retour.

    En ajoutant cela :
    $count = $req->fetch();
    Idem.

    Est-ce un pb de SQL ?

    Je peux faire un Select avant, mais j'aurais aimé le détecter directement.

    Une idée ?

    Christian

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    C'est normal, il n'y a pas d'erreur, regarde PDOStatement::rowCount pour obtenir le nombre de lignes affectées par un update,insert,delete.

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Merci. Je l'avais déjà testé.

    Je suis passé par un select auparavant, et voila...

    Bonne journée

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Ben je dirais que c'est la plus mauvaise des solutions rowcount ne fonctionne pas ?

  5. #5
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Il me renvoie toujours la même valeur. Je penche pour une exécution du SQL nouvelle pour moi...

    Par contre si je fais cela :

    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
    	if (file_exists(_DATABASE_NAME)==false){
    		return 1;
    		}
     
    	$db_handle = new PDO('sqlite:'. _DATABASE_NAME);
     
    	$SQL="SELECT valide FROM Users WHERE valide='$Code'";		
    	$req = $db_handle->prepare($SQL);
    	$result=$req->execute();
    	$result=count($req->fetch()) - 1;
     
    	if ($result < 1){//can't find record
    		return 2;
    	}
     
    	$SQL="UPDATE Users SET 'valide' = '1' WHERE valide='$Code'";	
    	$req = $db_handle->prepare($SQL);
    	$result=$req->execute(NULL);
    	$result = count($req->fetch()) - 1;
     
    	return $result;//returns 0 on success
    Alors cela fonctionne. Mais le rowCount() lui, ne fonctionne jamais !?!?

Discussions similaires

  1. [PHP 5.2] [Mail] mail(): pas d'erreurs, mais les mails n'arrivent pas
    Par lvr dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2009, 12h29
  2. Erreur #1146: La table n'existe pas, alors que si
    Par Nazario dans le forum Requêtes
    Réponses: 8
    Dernier message: 09/09/2008, 19h42
  3. Réponses: 3
    Dernier message: 25/06/2008, 15h01
  4. Pas d'erreur, mais d'enregistrement non plus
    Par ke2007 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/06/2008, 16h28
  5. pas d'erreur mais ma procédure ne fait pas ce qui est demandé
    Par mennou dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 15/06/2008, 17h14

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