Probleme insert dans une page php

Résolu
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. 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
    1. 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
      1. 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. 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
        2. @guiguitaristeIl suffisait de mettre NULL à la place de ''.
          Merci a toi redvan et a la comunauté des programmeurs.
          0