Probleme INSERT

Résolu
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   -  
 le père -
Bonjour,
je galère sur ce morceau de code que j'ai pourtant fait des dizaines et des dizaines de fois...

if(isset($_GET['setup'])){
	$nom=$_POST['nom'];
	$vignette=$_FILES['vignette']['name'];
	$date=$_POST['date'];
	$desc=$_POST['desc'];
	$nomxml=$_POST['nomxml'];
	
	//$insert='INSERT INTO events SET nom="'.$nom.'",vignette="'.$vignette.'",date="'.$date.'",desc="'.$desc.'",nomxml="'.$nomxml.'"';
	$insert='INSERT INTO events (name,vignette,date,desc,nomxml) VALUES ("'.$nom.'","'.$vignette.'","'.$date.'","'.$desc.'","'.$nomxml.'")';
	$resultat = mysql_query ($insert) or die ("Requête invalide");
    }


il me ressort toujours "requete invalide"... j'ai essayé les deux façons de INSERT et ça a pas marché... et ce qui est bizarre c'est que j'utilise exactement le même code sur d'autres pages et base de données et ça marche... j'ai vérifié aussi ma BD et je n'y vois rien d'anormal... et même quand je met n'importe quoi en nom de table ou en nom de champs, je n'ai aucune erreur qui apparait... qu'est-ce qui se passe passe??

17 réponses

le père
 
Tu as des parenthèses en trop
$log = ("INSERT INTO log SET user='".addslashes($user)."'");
1
le père
 
pour le addslashes ça marche quand meme en fait
Très mauvaise réponse!
Tout ce que tu peux dire, c'est que tu n'as pas lu la doc et que tu n'es pas encore tombé sur les cas où ça ne marche pas. Un jour tu reviendras sur le forum en disant 'j'ai toujours fait comme ça et ça a toujours marché, et aujourd'hui ça ne marche plus'.
1
Psix Messages postés 105 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour, je ne sais pas du tout si cela change quelque chose, mais que font les deux // dans
//$insert='INSERT INTO events SET nom="'.$nom.'",vignette="'.$vignette.'",date="'.$date.'",desc="'.$desc.'",nomxml="'.$nomxml.'"'; ? Ce n'est pas pour les commentaires ? Et il ne faut pas un mysql_query ? Sinon je ne sais pas dsl. Bonne chance
0
Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   2 331
 
un petit mysql_error() ? :-)
Tu dois certainement avoir au moins une des valeurs vides, tu ne les vérifies pas une à une, c'est un gros danger.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le père
 
Bonjour

DESC est un mot réservé en Mysql, si tu veux l'utiliser comme nom de champ, entoure le d'accents graves :
$insert='INSERT INTO events (name,vignette,date,`desc`,nomxml) VALUES ("'.$nom.'","'.$vignette.'","'.$date.'","'.$desc.'","'.$nomxml.'")';

ou change de nom...
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
pour les // c'est parce que c'est mis en commentaire...

pour les valeurs vides, j'avais déjà fait un code avec un control et ça marchait pas non plus et puis de toute façon le sql prend en compte les valeurs vides en laissant le champ vide une fois dans la BD...

pour desc, j'ai essayé les accents grave ça marche pas et j'ai changé desc en description et ça marche toujours pas...
0
le père
 
if(isset($_GET['setup'])){
$nom=$_POST['nom'];
$vignette=$_FILES['vignette']['name'];
$date=$_POST['date'];
$desc=$_POST['desc'];
$nomxml=$_POST['nomxml'];

ce test est farfelu, ton formulaire est en GET ou en POST ?
Sinon, que donne le mysql_error() demandé par Yoan ?
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
en fait mon action est comme ceci :
<form method='post' action='mapage.php?setup' enctype='multipart/form-data'>


c'est pour gagner une page de code en fait... j'ai d'autre get du meme genre mais au lieu du setup j'ai un update et un delete...

je l'ai déjà fait sur plusieurs page pour la même admin et ça marché jusqu'à maintenant...
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Au hasard : tu as essayé de protéger les valeurs insérées avec des simple quotes au lieu de doubles ?
0
le père
 
Mes excuses pour le farfelu. Mêler le GET et le POST, je n'avais jamais eu l'idée, mais pourquoi pas après tout ?

Mais le plus important, c'est le message d'erreur : que dit le MySQL_error() ?

En ce qui concerne les quotes, mysql se soucie peu que les données soient entourées de simples ou doubles quotes. Ils jouent exactement le même rôle, contrairement au PHP.
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Ok, merci le père, je m'en doutais mais n'en étais pas convaincu !
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
c'est ça le problème, c'est que le mysql_error() est inexistant même avec des nom de table faux...

mais j'ai essayé de l'incorporer dans une autre page où j'avais enchevétré plein de GET/POST comme je te l'ai expliqué plus haut et ça marche...

c'est encore un des grands mystères du PHP qui ne sera peut-être jamais résolu...

mais si quelqu'un a la réponse, je la prend volontier...

sur ce, un grand merci à toutes les personnes qui ont essayé...
0
le père
 
le problème, c'est que le mysql_error() est inexistant
Qu'est-ce que ça veut dire ?

$resultat = mysql_query ($insert) or die ("Requête invalide");
Tu as bien dit que ça t'affichait Requête invalide ? et si tu mets
$resultat = mysql_query ($insert) or die (mysql_error());
ça ne t'affiche rien ?

J'ai du mal à te suivre
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
oups j'avais pas vu ça comme ça... ^^
j'essayerai ça plus tard, je me suis lancé dans la suite du code...
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
bon j'ai essayé un nouveau code et ça me fait la même chose, mais j'ai mis mysql_error et sa me dit une erreur de syntaxe :

Erreur de syntaxe près de '(user='User1')' à la ligne 1

mais je vois pas d'où ça vient...
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
sachant qu'à la base mon code c'est :

$user = $_COOKIE["NOM_UTILISATEUR"];
        $log = ("INSERT INTO log SET (user='".addslashes($user)."')");
        $resultat = mysql_query ($log) or die (mysql_error());
0
le père
 
Et pour inséerer des données dans une base mysql, ce n'est pas addslashes qu'il faut utiliser, mais mysql_real_escape_string :
$log = ("INSERT INTO log SET user='".mysql_real_escape_string($user)."'");
0
powpowland Messages postés 396 Date d'inscription   Statut Membre Dernière intervention   20
 
merci beaucoup en fait j'avais trouvé 5min apres avoir posté le message, j'ai mis cote à cote deux INSERT... pour le addslashes ça marche quand meme en fait...
0