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 :

sqlite+autoincrement [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut sqlite+autoincrement
    bonjour
    je débute en sqlite
    j'essaie d'insérer une row dans une table sqlite en auto incrément
    je m'inspire de la faq suivante http://www.sqlite.org/faq.html#q1
    méthode INSERT INTO t1 VALUES(NULL,123);
    la cle primaire est un smallint (not null)
    erreur
    users.id_user may not be NULL ce qui me semble logique vu que l'on essai d'insérer une valeur null.
    Ma question est comment faire alors pour insérer automatiquement un Id dans sqlite depuis php5

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    je connais pas sqllite mais ca vaut le coup de tenter alors essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO t1 (champs1) VALUES (123);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    Bonjour
    j'ai essayé cet methode
    Citation Envoyé par Bebel
    je connais pas sqllite mais ca vaut le coup de tenter alors essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO t1 (champs1) VALUES (123);
    si je declare dans la table la cle primaire en not null j'ai le message id may not be null
    si je la laisse en null
    j'ai plusieurs entre avec le même id =null

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    Citation Envoyé par sakini
    Bonjour
    j'ai essayé cet methode
    Citation Envoyé par Bebel
    je connais pas sqllite mais ca vaut le coup de tenter alors essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO t1 (champs1) VALUES (123);
    si je declare dans la table la cle primaire en not null j'ai le message "id may not be null"
    si je la laisse en null
    j'ai plusieure entre avec le même id =null

  5. #5
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    en regardant l'aide j'ai vu cela
    To create keys that are unique over the lifetime of the table, add the AUTOINCREMENT keyword to the INTEGER PRIMARY KEY
    je pense que ca peut aussi venir de la

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut [Résolu]
    [Résolu]
    Je ne peux pas ajouter directement AUTOINCREMENt car j'utilise SQLiteManager qui ne propose pas cette option.
    J'ai fait autrement
    $req = " INSERT INTO users('id_user','login_user','password_user','email_user') VALUES((SELECT max(id_user) FROM users)+1,".$_POST['login_user'].",".$_POST['password_user'].",".$_POST['email_user'].") ";

    Il fallait également delarer la clé primaire en INTEGER en non en SMALLINT pour que cela marche

  7. #7
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    nickel
    c'etait aussi une des propositions de ton lien
    pense au tag resolu

  8. #8
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Bonjour,

    contrairement à ce qui est dit dans la doc officielle qui traîte du problème, il n'y a pas d'auto incrémentation sur les champs de type ITEGER et PRIMARY KEY.

    C'est quoi ce bazard ?
    Est-on obligé de recourir automatiquement à des pratiques de détection du type LASTINSERTID ?

  9. #9
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    J'arrive un peu tard, mais bon, mieux vaut tard que jamais.

    php_de_travers, il y a une auto-incrémentation sur les champs de type INTEGER PRIMARY KEY ou INTEGER PRIMARY KEY AUTOINCREMENT, bien que l'algorythme utilisé ne soit pas le même dans les deux cas.

    Tu as juste à mettre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `Id` INTEGER PRIMARY KEY
    dans le script SQL de création de ta table, et ça fonctionnera parfaitement.

    Ensuite, lors d'un insert, si tu ne veux ou ne peux préciser les champs de la table, remplace la valeur de l'Id par NULL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO maTable VALUES ( NULL, valeur1, valeur2)
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

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

Discussions similaires

  1. Android SQLite problèmes update Id (autoincrement)
    Par hamzahoucine dans le forum Android
    Réponses: 11
    Dernier message: 12/05/2012, 00h44
  2. qui connait sqlite ?
    Par Emmanuel Lecoester dans le forum SQLite
    Réponses: 23
    Dernier message: 19/02/2010, 13h44
  3. insertion d'un autoincrement
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/03/2004, 09h43
  4. Autoincrément, MSSQL et dbExpress
    Par Ethmane dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/02/2004, 13h33
  5. [ db2 ] cle primaire autoincrement
    Par hocinema dans le forum DB2
    Réponses: 4
    Dernier message: 25/02/2004, 14h20

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