Probleme INSERT
Résolu
powpowland
Messages postés
396
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
le père -
Bonjour,
je galère sur ce morceau de code que j'ai pourtant fait des dizaines et des dizaines de fois...
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??
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
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'.
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'.
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
//$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
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.
Tu dois certainement avoir au moins une des valeurs vides, tu ne les vérifies pas une à une, c'est un gros danger.
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...
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...
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...
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...
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 ?
$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 ?
en fait mon action est comme ceci :
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...
<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...
Au hasard : tu as essayé de protéger les valeurs insérées avec des simple quotes au lieu de doubles ?
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.
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.
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é...
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é...
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
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
oups j'avais pas vu ça comme ça... ^^
j'essayerai ça plus tard, je me suis lancé dans la suite du code...
j'essayerai ça plus tard, je me suis lancé dans la suite du code...
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...
Erreur de syntaxe près de '(user='User1')' à la ligne 1
mais je vois pas d'où ça vient...
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());