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 avec PDO depuis migration


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Problème avec PDO depuis migration
    Hello,
    J'ai un problème depuis que j'ai transféré mon site depuis un serveur PHP/MySQL tournant sur WAMP sur un serveur hébérgé par mon client et dont je n'ai pas les droits de gestion. Cela fait 2 jours que je cherche la solution mais je ne trouve rien.

    Pour ce site, j'utilise PDO.

    Le problème se pose entre autre lors de cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO questionnaire (id, nom, id_createur, description, date_expiration, actif, public, date_creation, nb_questions, mode_edition, lien, resultat_public, resultat_disponible) VALUES ('', 'monNom', '1', 'MaDescription', '2009-12-12', '1', '1', '2009-10-11', '5', '0', '02jfdwuj843r4u', '1', '0')
    Depuis le serveur WAMP, aucun problème.
    Si j'utilise le programme SQLyog sur le serveur de mon client, aucun problème.
    Par contre, via mon site hébérgé sur le serveur du client, cela ne marche pas. Pas de message d'erreur et rien n'est enregistré dans la base de données.

    Etonnament, les SELECT fonctionne correctement. Il y a juste le INSERT et le UPDATE qui ne fonctionnent pas.

    Pour ce insert problémtique, je l'exécute via la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $service_sql->exec('requete');
    Ce n'est pas $service_sql qui pose problème vu que ça marche sur le serveur WAMP et pour les select sur le serveur du client.

    Auriez-vous déjà rencontré ce type de problème ? Je me demande si cela ne viendrait pas de la configuration de PDO, PHP ou MySQL sur le serveur du client ?!

    Merci pour votre aide

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Et si tu faisais un try-catch pour avoir un retour d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {
            $service_sql->exec('requete');
        );
    } catch(PDOExeception $e) {
        die("erreur ! : {$e->getMessage()}");
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Hello,
    avec un try-catch, aucune exception n'est levée mais rien n'est enregistré en BD quand même. Je comprend vraiment pas d'où ça peut venir

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Je peux voir comment tu instancies ta connexion à la base de données ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Oui, alors j'utilise ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $service_sql = new PDO('mysql:host='.$hote.';dbname='.$nom_bd, $utilisateur, $mdp);

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Ajoute ceci (trouver dans la faq )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $service_sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Ah merci beaucoup !
    Alors ça a commencé par me lever une première exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLSTATE[HY000]: General error: 1364 Field 'nb_questions' doesn't have a default value
    J'ai un champ nb_questions que je n'utilisais pas. Je lui ai donc indiqué qu'il pouvait être null.

    Ensuite, une deuxième exception s'est produite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1
    J'ai donc modifié ma requête comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO questionnaire (nom, id_createur, description, date_expiration, actif, public, date_creation, nb_questions, mode_edition, lien, resultat_public, resultat_disponible) VALUES ('monNom', '1', 'MaDescription', '2009-12-12', '1', '1', '2009-10-11', '5', '0', '02jfdwuj843r4u', '1', '0')
    J'ai enlevé la partie ou je définissait l'id à ''.

    Autant pour la première erreur je comprend, mais pour la seconde c'est étonnant. J'ai vu sur beaucoup de tutoriels des exemples où lorsque l'id était de type auto_increment, il était quand même définit avec une valeur vide ('') dans la requête !

    Mais le plus bizarre, c'est que ce même code marche sans problèmes sur mon serveur WAMP et pas sur le serveur de mon client

    En tout cas merci beaucoup pour ton aide MaitrePylos, j'aurais pu chercher encore longtemps autrement !

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Effectivement si ton id est auto-incrémenté, il ne sert absolument à rien de le mettre dans ton Insert.

    Tu aurais pu passer la valeur NULL et non pas la valeur vide('').

    Si tu veux vraiment mettre le id, essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO questionnaire (id, ...) VALUES (NULL, ....)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    D'accord, merci!

Discussions similaires

  1. probléme avec PDO fetch
    Par ryodo dans le forum Langage
    Réponses: 9
    Dernier message: 26/04/2011, 16h27
  2. Problème avec Windows depuis installation de Linux
    Par maoui05 dans le forum Windows Vista
    Réponses: 1
    Dernier message: 03/06/2010, 20h24
  3. Réponses: 10
    Dernier message: 16/11/2009, 16h14
  4. [PDO] Un problème avec PDO
    Par magmus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2009, 17h47
  5. Problème avec rake db:migrate
    Par 3000trees dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 13/07/2008, 13h28

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