Probleme insert dans une page php

Résolu
guiguitariste -  
 Beautybeast -
Bonjour,

Je débute en php et j'ai un problème lors de l'exécution d'un insert:

$sql = mysql_query("INSERT into nom values('', $Nom, $Email)");
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

J'obtiens ce message-ci:

Erreur SQL !
Query was empty

Quelqu'un pourrait-il m'aider à résoudre ce problème qui me ronge la vie depuis deux jours?
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. ridvan Messages postés 14 Statut Membre 8
     
    1 - T'as deux fois mysql_query
    2 - Tu nas pas écrit tes variables pour donner des valeurs d'abord.
    3 - "," laquelle se trouve avant $Nom générait d'une faute

    Essaie ceci:
    $sql = "INSERT INTO nom (Nom, Email) VALUES ('$Nom', '$Email')";
    mysql_query ($query) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    0
    1. guiguitariste
       
      Merci redvan ca a l'air de fonctionner mais une erreur subsiste
      En fait dans ma table j'ai une clé qui est auto_increment et lorsque je fais mon insert j'obtiens ceci:

      Erreur SQL !INSERT INTO nom (Cle, NomCli, Email) VALUES ( '', 'dgs', 'dsg')
      Incorrect integer value: '' for column 'Cle' at row 1

      dans mon code j'ai ceci:

      $sql = "INSERT INTO nom (Cle, NomCli, Email) VALUES ( '', '$Nom', '$Email')";
      0
      1. guiguitariste > guiguitariste
         
        Il suffisait de mettre NULL à la place de ''.
        Merci a toi redvan et a la comunauté des programmeurs.
        0
  2. Beautybeast
     
    Oui tu peu utiliser le NULL comme valeur de ta "cle" auto_increment
    OU
    Tu peu laisser MySQL le gérer lui-même en n'impliquant pas le champ "Cle" dans la requête

    exemple :

    $sql = "INSERT INTO nom (Cle, NomCli, Email) VALUES ( NULL, '$Nom', '$Email')";
    OU
    $sql = "INSERT INTO nom (NomCli, Email) VALUES ('$Nom', '$Email')";

    En passant, c'est une très bonne habitude d'utiliser les Simple Quotes (') pour encapsuler tes données a insérer.

    D'autre bonnes habitudes a prendre :
    - Utiliser la function mysql_real_escape_string() de PHP pour éviter les problème d'injection de SQL.
    - Inclure un ";" a la fin de ta requête aussi.

    exemple :

    $sql = "INSERT INTO nom (Cle, NomCli, Email) VALUES ( NULL, '".mysql_real_escape_string($Nom)."', '".mysql_real_escape_string($Email)."');";
    0
  3. Beautybeast
     
    Ohh.. j'oubliais..

    Mettre les nom de champs et tables entre ` (L'apostrophe tout croche)

    Exemple de une de mes requete...

    mysql_query("INSERT into `admin_users` (`Usr`,`Pwd`,`Note`,`Active`,`Nickname`,`Email`) values ('".mysql_real_escape_string($Username)."','".mysql_real_escape_string($Password)."','".mysql_real_escape_string($Note)."','".mysql_real_escape_string($Active)."','".mysql_real_escape_string($Nickname)."','".mysql_real_escape_string($Email)."');");

    en esperant que un jour ca va aider quelqu'un :)
    0