Probleme INSERT

Résolu/Fermé
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 - 8 juin 2009 à 12:20
 le père - 11 juin 2009 à 15:13
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

Tu as des parenthèses en trop
$log = ("INSERT INTO log SET user='".addslashes($user)."'");
1
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 jeudi 14 mai 2009 Statut Membre Dernière intervention 7 décembre 2010 5
8 juin 2009 à 12:27
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 mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 329
8 juin 2009 à 12:31
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
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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
8 juin 2009 à 13:43
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
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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
8 juin 2009 à 13:59
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 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
8 juin 2009 à 14:02
Au hasard : tu as essayé de protéger les valeurs insérées avec des simple quotes au lieu de doubles ?
0
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 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
8 juin 2009 à 14:15
Ok, merci le père, je m'en doutais mais n'en étais pas convaincu !
0
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
8 juin 2009 à 14:18
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 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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
8 juin 2009 à 15:08
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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
11 juin 2009 à 14:31
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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
11 juin 2009 à 14:32
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
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 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
11 juin 2009 à 14:58
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