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 :

oci_commit($conn); retourne toujours true (même si pas d'update) [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Par défaut oci_commit($conn); retourne toujours true (même si pas d'update)
    Bonjour
    J'utilise le script suivant pour effectuer un simple update sur une une table dans la base oracle. Mon problème est que $committed retourne toujours true (1) même si la valeur passée en paramètre à ma requètte est arbitraire(n'existe pas dans la table , : en guise de test ).

    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
     
     
    $stmt = oci_parse($conn, $query);
     
     
    oci_execute($stmt, OCI_DEFAULT);
     
    $committed = oci_commit($conn);  
     
    oci_free_statement($stmt);  
     
    echo $committed;
     
     if ($committed){
    echo "update succeded";
     
    }
     
    // Vérification de la validation : si une erreur est survenue, afficher    // le message d'erreur   
     if (!$committed) {        
    $error = oci_error($conn);        
    echo 'Validation échouée. Oracle dit : ' . $error['message'];   
     }

    En fait c'est comme oci_commit ne vérifie que la syntaxe dans la requette ..si cette dernière est bonne , elle retournera 1 en tous cas..(Ou bien je me trompe.

    Existe t'il une autre fonction qui ferait le même boulot que oci_commit?

    Merci de votre AIDE.
    Amicalement

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    si tu veux vérifier que ton instruction a été correctement exécutée, il faut que tu vérifies le résultat de oci_execute, et pas celui de oci_commit...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Par défaut
    Bonjour

    Je viens de tester de la même façon qu'avant, le retour de la fonction oci_execute :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $rs=oci_execute($stmt, OCI_DEFAULT);
     
    echo $rs;

    Mais j 'ai toujours "1" qui est retourné.

    Cordialement

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par sami117 Voir le message
    Bonjour

    Je viens de tester de la même façon qu'avant, le retour de la fonction oci_execute :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $rs=oci_execute($stmt, OCI_DEFAULT);
     
    echo $rs;

    Mais j 'ai toujours "1" qui est retourné.

    Cordialement
    Et quelle est ta requête ?
    Pourquoi devrait-elle générer une erreur ?

    Si tu cherches à savoir combien de lignes sont impactées par une requête update ou delete, il faut utiliser oci_num_rows...

  5. #5
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut, je crois qu´il retourne true pour te dire que la requete etait synthactiquement correct, cela n´a rien a voir avec le nombre de lignes affectées.
    si tu veux savoir le nombre de lignes affectées par cette requete, il faut un

    oci_num_rows($rs).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Par défaut
    Re-Bonjour

    Merci beaucoup pour votre réponse. c'est Bien la bonne fonction que je devais utiliser..oci_num_rows() Bien évidemment.

    Amicalement


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

Discussions similaires

  1. [XL-2007] Collection retourne toujours le même item
    Par cchasse98 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/01/2013, 06h07
  2. onSubmit() retourne toujours true
    Par hisy dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/10/2008, 17h23
  3. getSelectedItem me retourne toujours la même valeur
    Par une_tite_question dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/06/2008, 13h49
  4. 1 site, 2urls, on retourne toujours la même url
    Par c4cf6 dans le forum Apache
    Réponses: 1
    Dernier message: 29/06/2007, 17h02
  5. [sockets] gethostbyname retourne toujours la même chose
    Par Strab dans le forum Développement
    Réponses: 3
    Dernier message: 15/09/2006, 10h24

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