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 :

erreur de syntaxe


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut erreur de syntaxe
    bonjour à tous
    j'ai un probleme avec une création de sites de news.
    dès ma page lancé j'ai un message dès que j'ai cliqué pour ajouter ma news:
    Erreur SQL!
    Erreur de syntaxe près de ''news' VALUES ('Bienvenue', 'administrateur', '2006:02:16', 'bon' à la ligne 1

    voila mon code pour ma page ajout.php:
    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
    <?
    ob_start();
    if  (!empty($_POST['titre']) && !empty($_POST['auteur']) && !empty($_POST['texte']) && !empty($_POST['date']));
    {
    //connexion à la base de données (server,login,password)
    $db=mysql_connect("localhost","admin","******");
    //sélection de la base de données 'pw_news'
    mysql_select_db("pw_news",$db);
    //insertion des variables dans la table 'news' par titre, auteur, date, texte
    $sql="INSERT INTO 'news' VALUES ('".$_POST['titre']."', '".$_POST['auteur']."', '".$_POST['date']."', '".$_POST['texte']."')";
    //connexion bonne ou erreur de connexion
    $result=mysql_query($sql) OR die ('Erreur SQL!<br>'.mysql_error());
     
    	header('Location:visualisation.php');
    }
    ob_end_flush();
    ?>
    merci pour vos futurs réponses

  2. #2
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Enlève les quotes autour du nom de ta table et fais un echo $sql pour voir ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    j'ai fait ce que tu m'a dit et voila ce qu'il me met

    Erreur SQL!
    Column count doesn't match value count at row 1

  4. #4
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Cela signifie que tu as plus ou moins quatre champs dans ta table, mais pas exactement quatre.
    Autrement dit tu doit indiquer implicitement les champs que tu veux remplir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO ma_table ( id , val1 , val2 ) VALUES ( 'id' , 'val1' , 'val2' ) ;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    là j'ai une nouvelle erreur:
    Erreur SQL!
    Duplicata du champ '0' pour la clef 1
    avec ceci dans ma ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="INSERT INTO news(id,titre,auteur,date,texte) VALUES (' ','".$_POST['titre']."', '".$_POST['auteur']."', '".$_POST['date']."', '".$_POST['texte']."')";

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    certainement q la valeur est deja inserer dans la table.
    au fait tu peux montrer les structures de ta table?

  7. #7
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Pis si ton id est en auto-increment ce n'est pas utile de le spécifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="INSERT INTO news(titre,auteur,date,texte) VALUES ('".$_POST['titre']."', '".$_POST['auteur']."', '".$_POST['date']."', '".$_POST['texte']."')";

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Par défaut
    Si id est la clef primaire de ta table ou est auto incrementee il ne faut pas la mettre dans ta requete insert. non ?
    essais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="INSERT INTO news(titre,auteur,date,texte) VALUES ('".$_POST['titre']."', '".$_POST['auteur']."', '".$_POST['date']."', '".$_POST['texte']."')";

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut
    $result=mysql_query($sql) OR die ('Erreur SQL!<br>'.mysql_error());

    Le mieux c'est dans ton die, affiche ta requete

    Lorsque tu va avoir un erreur, ta requete va s'afficher a l'écran et tu va trouver aussi ce qui ne fonctionne pas.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    j'ai essayé le code et voila ce que ca me donne


    Parse error: parse error in c:\documents and settings\administrateur\mes documents\créer un intranet\visualisation.php on line 10

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    voila la structure de la table:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE DATABASE 'pw_news';
        CREATE TABLE 'news'(
        'id' INT NOT NULL AUTO INCREMENT,
        'titre' VARCHAR(64) NOT NULL,
        'auteur' VARCHAR(32) NOT NULL
        'date' DATE NOT NULL,
        'texte' TEXT NOT NULL,
        PRIMARY KEY ('id')
    );

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Citation Envoyé par dev_php_205
    Si id est la clef primaire de ta table ou est auto incrementee il ne faut pas la mettre dans ta requete insert. non ?
    Salut

    C'est partiellement erronné : si l'id est clé primaire, il faut le spécifier dans le INSERT, sans quoi le premier enregistrement prendra une valeur par défaut et les enregistrements suivants te donneront une erreur de duplicate.
    Cela dit, si ton id est auto_increment, alors il est préférable de ne pas le spécifier dans le INSERT car c'est le SGBD qui s'en chargera.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Par défaut
    Kirkis, j'ai vu que je m'etais mal esprime apres l'avoir poste.
    Je voulais dire la PK qui etait auto-incrementee .... Tu as bien fait de corriger mon erreur.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    en fait dans mon INSERT INTO j'ai pas spécifié le id
    Voila ma ligne INSERT INTO/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="INSERT INTO news(titre,auteur,date,texte) VALUES ('".$_POST['titre']."', '".$_POST['auteur']."', '".$_POST['date']."', '".$_POST['texte']."')";

Discussions similaires

  1. [Directives] Page blanche quand erreur de syntaxe
    Par syl2095 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 17/02/2006, 15h15
  2. [sql] erreur de syntaxe
    Par cmoa59 dans le forum JDBC
    Réponses: 14
    Dernier message: 03/05/2005, 11h41
  3. erreur de syntaxe en C++
    Par sergepmessa dans le forum C++
    Réponses: 6
    Dernier message: 11/03/2005, 18h15
  4. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09
  5. erreur de syntaxe javascript dans ma page
    Par Oluha dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/02/2005, 14h53

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