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

Symfony PHP Discussion :

Requête sur base de données [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut Requête sur base de données
    Bonjour cher tous!

    Aujourd'hui c'est un probleme de requette sur une base de données qui me rend fou
    Sur un projet j'ai utilisé deux bases de données et dans mon schema.yml à chaque fois je spécifie le nom de la base de données concernée sur mes tables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Budget:
      connection: baseclient
      tableName: budget
      columns:
        id:
          type: integer(11)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
    ...
    j'ai bien genere les modèles, les formulaires, les filtres, j'ai cree le sql et je l'ai insere dans ma base grace aux commandes symfony.

    Ensuite j'ai genere des modules avec la commande "doctrine_generate_admin" pour les CRUD de mes tables et ça marche nickel.

    Mais seulement sur un module simple "generate_module" j'essaye d'interroger ma base et j'ai une grosse erreur.
    dans le fichier.table j'ai cette requette:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function getUserByConnexion($username,$password)
        {
            $q = Doctrine_Query::create()
                ->from('Utilisateur u')
                ->where('u.username ='.$username)
                ->andWhere('u.password ='.$password);
            return $q;
        }
    dans mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            $this->username= $request->getParameter('username');
            $this->password = $request->getParameter('password');
     
     
            $this->user = Doctrine::getTable('Utilisateur')
                              ->getUserByConnexion($this->username,$this->pass)
                              ->execute();
    et quand ce que le $this->user me donne dans le template
    j'ai cette erreur que je ne comprend pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distributeurvichy' in 'where clause'. Failing Query: "SELECT u.id AS u__id, u.username AS u__username, u.password AS u__password, u.repassword AS u__repassword, u.nom AS u__nom, u.prenom AS u__prenom, u.fonction AS u__fonction, u.email AS u__email, u.mobile AS u__mobile, u.telephone AS u__telephone, u.is_active AS u__is_active, u.is_super_admin AS u__is_super_admin, u.derniere_connexion AS u__derniere_connexion, u.ip_connexion AS u__ip_connexion, u.date_creation AS u__date_creation, u.derniere_modification AS u__derniere_modification, u.unite_id AS u__unite_id, u.profil_utilisateur_id AS u__profil_utilisateur_id FROM utilisateur u WHERE (u.username = distributeurvichy AND u.password = 27572535ce007aa408d2e145c18e64b0)"
    au secours je deviens bête , il me dit qu'il ne connait pas la colonne 'distributeurvichy' ...je saisd pas mais..cette colonne n'a effectivement jamais existé dans ma base.

    Si quelqu'un peut m'aider je suis preneur!!!

    Merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function getUserByConnexion($username,$password)
        {
            $q = Doctrine_Query::create()
                ->from('Utilisateur u')
                ->where('u.username = ?', $username)
                ->andWhere('u.password = ?', $password);
            return $q;
        }
    Essai cette requete pour voir.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    On avance déjà mais on est encore loin!!
    Il me retourne ce resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <pre> Doctrine_Collection data : Array( 0 : Object(Utilisateur) ) </pre>
    je sais pas si je comprends mal mais ça veut dire qu'il n'y a aucun objet qui a été retourné et pourtant il existe bel et bien dans ma table.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Bon on est d'accord que la requête originel ne pouvait marcher. Corrigé par PeytaWodka.

    Reste un problème purement sql, pourquoi n'y a-t-il pas de données récupérées.

    Question, ton password est en claire dans ta base ???? Si non, ceci peut expliquer cela !

    Piste de recherche. Lance ton application en mode dev. Dans la barre de debug tu as les requêtes sql utilisées. Regarde celle qui récupère ton user. Teste là directement dans un outil comme phpMyAdmin ou Heidi.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    Mon mot de passe est en hash dans ma base, et je prends bien soin de transformer le mot de passe que je recupere du formulaire avant de lancer ma recherche dans la base et en plus j'ai essayer de rechercher mon user sans faire reference au mot de passe et il n'a toujour rien trouver.

    Par ailleurs en executant le script que j'ai recupere dans le log
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT u.id AS u__id, u.username AS u__username, u.password AS u__password, u.repassword AS u__repassword, u.nom AS u__nom, u.prenom AS u__prenom, u.fonction AS u__fonction, u.email AS u__email, u.mobile AS u__mobile, u.telephone AS u__telephone, u.is_active AS u__is_active, u.is_super_admin AS u__is_super_admin, u.derniere_connexion AS u__derniere_connexion, u.ip_connexion AS u__ip_connexion, u.date_creation AS u__date_creation, u.derniere_modification AS u__derniere_modification, u.unite_id AS u__unite_id, u.profil_utilisateur_id AS u__profil_utilisateur_id FROM utilisateur u WHERE (u.username = ? AND u.password = ?) - (distributeurvichy, 27572535ce007aa408d2e145c18e64b0)
    j'ai eu cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? AND u.password = ?) - (distributeurvichy, 27572535ce007aa408d2e145c18e64b0) ' at line 1
    J'ai donc modifier mon code dans mon modele

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function getUserByConnexion($username,$password)
        {
            $q = Doctrine_Query::create()
                ->from('Utilisateur u')
                ->where('u.username = "'.$username.'"')
                ->andWhere('u.password = "'.$password.'"');
            return $q;
        }
    J'ai eu ce script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT u.id AS u__id, u.username AS u__username, u.password AS u__password, u.repassword AS u__repassword, u.nom AS u__nom, u.prenom AS u__prenom, u.fonction AS u__fonction, u.email AS u__email, u.mobile AS u__mobile, u.telephone AS u__telephone, u.is_active AS u__is_active, u.is_super_admin AS u__is_super_admin, u.derniere_connexion AS u__derniere_connexion, u.ip_connexion AS u__ip_connexion, u.date_creation AS u__date_creation, u.derniere_modification AS u__derniere_modification, u.unite_id AS u__unite_id, u.profil_utilisateur_id AS u__profil_utilisateur_id FROM utilisateur u WHERE (u.username = "distributeurvichy" AND u.password = "27572535ce007aa408d2e145c18e64b0") - ()
    je l'ai teste sur phpmyadmin et j'ai eu cet erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 0, 30' at line 1
    apparemment il doit y avoir un problème avec le LIMIT 0, 30!!?,

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    En fait quand je regarde la commande sql qui est donnée dans le fichier de log
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT u.id AS u__id, u.username AS u__username, u.password AS u__password, u.repassword AS u__repassword, u.nom AS u__nom, u.prenom AS u__prenom, u.fonction AS u__fonction, u.email AS u__email, u.mobile AS u__mobile, u.telephone AS u__telephone, u.is_active AS u__is_active, u.is_super_admin AS u__is_super_admin, u.derniere_connexion AS u__derniere_connexion, u.ip_connexion AS u__ip_connexion, u.date_creation AS u__date_creation, u.derniere_modification AS u__derniere_modification, u.unite_id AS u__unite_id, u.profil_utilisateur_id AS u__profil_utilisateur_id FROM utilisateur u WHERE (u.username = "distributeurvichy" AND u.password = "27572535ce007aa408d2e145c18e64b0") - ()
    si je supprime le " -() " qu'il ya a la fin du script ca va me ramene l'objet que je recherche.
    Mais la question est de savoir comment faire pour l'enlever depuis la requête doctrine

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

Discussions similaires

  1. Requête sur base de données distante
    Par themich dans le forum Requêtes
    Réponses: 0
    Dernier message: 09/02/2013, 18h24
  2. Requête sur bases de données Blast
    Par jb59000 dans le forum Bioinformatique
    Réponses: 12
    Dernier message: 09/02/2009, 11h06
  3. [MySQL] Requête sur base de données à partir d'un formulaire
    Par spawns dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/01/2009, 09h00
  4. Execution de requête sur base de données distante
    Par ~~PriVate JoKe~~ dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/11/2006, 21h59
  5. Requête sur base de données ACCESS
    Par JLamotte dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 10h50

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