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 :

Prepare insert into


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Prepare insert into
    Bonjour tout le monde,

    j'ai un problème de débutant, et vous pourrez sûrement m'aider.

    C'est un test. J'ai une méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	public function add(Personnages $perso)
      {
        $q = $this->_db->prepare("INSERT INTO personnages (nom, degats, force) VALUES(:nom, :degats, :force)");
        $q->execute(array(
    	'nom'=>$perso->nom(),
    	'degats'=>$perso->degats(),
    	'force'=>$perso->force()
     
       ));
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $manager=new PersonnagesManager($db);
    $perso=new Personnages(array(
    'nom'=>'Le perso',
    'force'=>80
    ));
    echo 'Le personnage '.$perso->nom().' a '.$perso->force().' en force';
     
    $manager->add($perso);
    Ma table se compose de 4 champs "id" "nom" "degats" et "force".

    L'objet est bien hydraté, la fonction echo renvoie bien la valeur des attributs, aucun souci, mais la fonction add() ne fonctionne pas correctement.

    Le seul moyen de la faire fonctionner, c'est sous cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $q = $this->_db->prepare("INSERT INTO personnages VALUES('', :nom, :degats, :force)");
    Dans ce cas, ça marche, mais étant donné que c'est un test que je fais pour apprendre/progresser, j'aimerais surtout comprendre pourquoi l'autre forme (en haut de page) ne fonctionne pas, pourtant elle me paraît juste.

  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
    Quelle erreur obtiens-tu ?

    Tu as bien une autoincrementation sur l'id ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Oui l'id s'autoincrémente, et aucune erreur n'apparaît. La création d'un nouvel enregistrement ne se fait juste pas.


    Apparemment l'erreur pourrait provenir de champs "force" qui est un mot clef réservé par sql.

  4. #4
    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 bien activé les erreurs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Oui les erreurs sont bien activés pourtant.

    Sinon je confirme, en changeant le champs "force" par "puissance" tout rentre dans l'ordre, et je n'ai plus d'erreur d'insertion.

    Je te remercie

  6. #6
    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
    Bizarre que tu ne vois pas l'erreur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. probleme clé sequentiel avec insert into
    Par shake dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2004, 15h54
  3. probleme d'INSERT INTO et JavaScript
    Par Matlight dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/03/2004, 15h36
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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