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ésence d'une apostrophe lors d'une insertion


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Points : 90
    Points
    90
    Par défaut Présence d'une apostrophe lors d'une insertion
    Bonjour à tous,

    J'ai un petit problème avec un mysql_query pour une insertion de données en SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $rep="insert into article(refart,designart,nbpageart,auteurart,editeurart,prixart,photoart,stockart,numsousfamille,numfamille,numtype,nouveau,promotion) values ( '".$_POST['ref']."' , '".$_POST['designation']."' , ".$_POST['page']." , '".$_POST['auteur']."' , '".$_POST['editeur']."' , '".$_POST['prix']."' , '".$fichier."' , ".$_POST['stock']." , ".$_POST['sfam']." , ".$_POST['fam']." , ".$_POST['type']." , '".$_POST['nouveau']."' , '".$_POST['promotion']."' );";
    											   mysql_query($rep);
    ... sachant que seul nbpageart, stockart, numsousfamille, numfamille, typefamille sont des entiers, le reste sont des varchar.

    Apparemment il y a un problème avec une apostroche, mais je ne trouve pas.

    Merci!

  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
    Salut,

    un petit echo $rep; serait plus facile pour voir ou se situe le problème.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Bonjour,

    oui un echo de la requête SQL nous aiderez.
    Il faut penser toujours à mettre des caractères d'échappement aux valeurs qui vont être mises dans tes champs avec mysql_real_escape_string.
    Car celà peut faire échouer l'exécution de ta requête si une valeur ici des variables POST contiennent des '.

    mysql_real_escape_string($_POST['designation']) plutôt que $_POST['designation']

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Points : 90
    Points
    90
    Par défaut
    En fait, c'est un peu bizarre, car la requête fonctionne lorsque tout les champs son remplis, mais si je ne renseigne que la référence et l'image; ce la ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into article(refart,designart,nbpageart,auteurart,editeurart,prixart,photoart,stockart,numsousfamille,numfamille,numtype,nouveau,promotion) values ( 'livre05' , '' , , '' , '' , '' , 'livre05.bmp' , , 1 , 2 , 3 , 'non' , 'non' );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     MySQL a répondu:Documentation
    #1064 - Erreur de syntaxe près de ' '' , '' , '' , 'livre05.bmp' , , 1 , 2 , 3 , 'non' , 'non' )' à la ligne 1

  5. #5
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    As-tu vérifier que tous les champs que tu laisses vide autorisent le fait d'avoir une valeur nulle ? Pour les entiers non remplis, il ne faut pas mettre '' ou null ?

    Je parle du champ après 'livre05.bmp'.

  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
    nbpageart et stockart ne sont pas renseignés dans ta requête.
    Ils doivent valoir 0 ou '' ou Null selon leur type.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Points : 90
    Points
    90
    Par défaut
    Les champs vides acceptent les valeurs vides.

    Voici la table.

    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
     
    Structure de la table `article`
    -- 
     
    CREATE TABLE `article` (
      `numart` int(50) NOT NULL auto_increment,
      `refart` varchar(30) NOT NULL,
      `designart` varchar(30) NOT NULL,
      `nbpageart` int(11) default NULL,
      `auteurart` varchar(30) default NULL,
      `editeurart` varchar(30) default NULL,
      `prixart` varchar(10) NOT NULL,
      `photoart` varchar(50) default NULL,
      `stockart` int(11) default NULL,
      `numsousfamille` int(11) NOT NULL,
      `numfamille` int(11) NOT NULL,
      `numtype` int(11) NOT NULL,
      `nouveau` varchar(20) default NULL,
      `promotion` varchar(20) default NULL,
      PRIMARY KEY  (`numart`),
      UNIQUE KEY `refart` (`refart`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

  8. #8
    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
    Les champs vides acceptent les valeurs vides.
    C'est vrai que ca a l'air de tellement bien fonctionner ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Points : 90
    Points
    90
    Par défaut
    Bennn nan justement...

    Avant avec EasyPHP 1.8, aucun problème, et puis là, 2.X...

Discussions similaires

  1. Remplacer une valeur lors d'un Insert . . . Select
    Par yobogs dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/11/2007, 15h30
  2. extraction d'une table lors d'un insert
    Par biboup dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/07/2007, 15h27
  3. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  4. Réponses: 28
    Dernier message: 28/07/2005, 14h12
  5. Réponses: 2
    Dernier message: 21/06/2004, 15h55

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