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 :

préparation d'une requête avec OCI [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut préparation d'une requête avec OCI
    Bonjour à vous.
    Je viens ici pour vous demander conseil, je n'ai jamais fais de requête préparée avec oci8 alors il y surement une petite erreur. Merci de bien vouloir m'aider.
    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
     
    $date = $_GET['datfin'];
    $badge2 = $_GET['badge'];
     
    $update = "UPDATE plbmat SET datfin = TO_DATE(:dat,'DD-MM-YYYY') WHERE nobadg = :bad ";
     
    $stid = oci_parse($conn,$update);
    oci_bind_by_name($stid,":dat",$date);
    oci_bind_by_name($stid,":bad", $badge2);
     
     
     
    oci_execute($stid);
     
    oci_free_statement($stid);
    $close = oci_close($conn);

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as une erreur en retour ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bah en fait je peux pas la tester alors je voulais savoir si la syntaxe était correcte :$

  4. #4
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Bonsoir,

    A priori il manque un commit pour que la modification soit prise en compte, à moins que PHP ne soit paramétré en mode autocommit. A part ça, et si on suppose que la variable $conn a été valuée au préalable, ça à l'air bon.

  5. #5
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Oui pour l'autocommit de php.
    J'avais juste peur au niveau du :dat si il y avait des ':dat'.
    Et oui ma variable $conn et créé avant.

    Merci pour votre réponse.

  6. #6
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    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
     
    $date = $_GET['datfin'];
    $badge2 = $_GET['badge'];
     
    $update = "UPDATE plbmat SET datfin = TO_DATE(:dat,'DD-MM-YYYY') WHERE nobadg = :bad ";
     
    $stid = oci_parse($conn,$update);
    oci_bind_by_name($stid,":dat",$date);
    oci_bind_by_name($stid,":bad", $badge2);
     
     
     
    oci_execute($stid);
    oci_free_statement($stid);
    $close = oci_close($conn);
    Donc j'ai pas d'erreurs mais ma datfin n'est pas modifié

  7. #7
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Personne a une idée ?

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as débuggué les valeurs que tu envoies en paramètre et que tu as testé ta requête directement sur ta base (via SqlDevelopper ou assimilé) ? Et tu es bien en auto-commit ?
    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]

  9. #9
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    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
     
        if (!empty($_GET)) {
            $date = $_GET['datfin'];
            $badge2 = $_GET['badge'];
            /*$update = "UPDATE plbmat SET datfin = TO_DATE('".$_GET['datfin']."','DD-MM-YYYY') WHERE nobadg ='".$_GET['badge']."'";*/
            $update = "UPDATE plbmat SET datfin = TO_DATE(:dat,'DD-MON-YY') WHERE nobadg = :bad ";
            if (!is_null($conn)) {
                echo 'Connexion Oracle OK';
                $stid = oci_parse($conn,$update);
                if (is_null($stid)) {
                    echo 'Erreur Parse requete: '.$update;
                } else {
                    echo 'Parse requete OK';
                    if (!oci_bind_by_name($stid,":dat",$date)) {
                        echo 'Erreur BIND ":dat" avec '.$date;
                    } else {
                        echo 'BIND ":dat" avec '.$date.' => OK';
                        if (!oci_bind_by_name($stid,":bad", $badge2)) {
                            echo 'Erreur BIND ":bad" avec '.$badge2;
                        } else {
                            echo 'BIND ":bad" avec '.$badge2.' => OK';
                            if (!oci_execute($stid)) {
                                echo 'Erreur EXECUTE';
                                oci_rollback($conn);
                            } else {
                                echo 'EXECUTE OK => tentative COMMIT';
                                //Ici tout c'est bien passé => COMMIT.
                                if (!oci_commit($conn)) {
                                    echo 'COMMIT KO';
                                } else {
                                    echo 'COMMIT OK';
                                }
                            }
    //                         oci_free_statement($stid);
    //                         $close = oci_close($conn);                     
                        }
                    }
                }
            } else  {
                echo 'Aucune connexion Oracle';
            }
        }
    J'ai remis des test un peu partout et il se trouve que j'ai aucune erreur qui s'afficher tout est bon, sauf que ma date n'est pas modifiée.
    J'ai testé un update sur sqlplus et ça fonctionne bien.
    WTF ! ^^

  10. #10
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum... peut-être un problème de format de donnée.
    Si la colonne nobadg est une colonne numérique, essayes de forcer le type de données avec oci_bind_by_name($stid,":bad", $badge2, -1, SQLT_INT) par exemple.
    Vérifie aussi que le format de la date que tu envoie correspond au format utilisé dans la fonction TO_DATE. (Au passage, tu as une raison d'utiliser le format DD-MON-YY ?)
    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]

  11. #11
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je vais tester.
    C'est le format que je reçois quand je fais un select sur la date.

    Merci de ta réponse

  12. #12
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sauf erreur de ma part 'MON', c'est un mois littéral, donc ça dépend de l'encodage, de la locale... mieux vaut utiliser la valeur numérique.
    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]

  13. #13
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Tu as raison j'avais bien un problème sur le format de ma date ! Tout fonctionne maintenant.
    Merci pour l'aide, c'est cool

  14. #14
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tout marche, un petit clic sur le bouton Résolu
    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]

  15. #15
    Candidat au Club
    Homme Profil pro
    Reims
    Inscrit en
    Juin 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Reims
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Oui de suite

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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