Probleme insert dans une page php

Résolu/Fermé
guiguitariste - 12 juin 2008 à 16:33
 Beautybeast - 22 oct. 2008 à 04:39
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?
A voir également:

3 réponses

ridvan Messages postés 14 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 10 octobre 2012 8
12 juin 2008 à 16:49
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
guiguitariste
12 juin 2008 à 17:12
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
guiguitariste > guiguitariste
12 juin 2008 à 17:20
Il suffisait de mettre NULL à la place de ''.
Merci a toi redvan et a la comunauté des programmeurs.
0
Beautybeast
22 oct. 2008 à 04:36
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
Beautybeast
22 oct. 2008 à 04:39
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