Page 1 sur 1
erreur syntaxe
Posté : 22 oct. 2013, 16:11
par michel71
Bonjour,
Quelqu'un peut il m'aider à résoudre ce problème
$index='N° '.$_POST['num_timbre'];
// lecture de la table
$sql= 'DELETE FROM '.$_SESSION['chemin_collec'].' WHERE yvert='.$index;
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
Voici l'erreur
N° 999999Erreur SQL !
DELETE FROM timbresdefrance_collections.mich WHERE yvert=N° 999999
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '° 999999' at line 1
La table comporte bien la colonne "yvert" avec le texte "N° 999999"
Merci
Re: erreur syntaxe
Posté : 22 oct. 2013, 16:19
par damien_55
Slt,
$sql= "DELETE FROM '".$_SESSION['chemin_collec']."' WHERE yvert= '".$index."'";
Re: erreur syntaxe
Posté : 22 oct. 2013, 17:47
par michel71
Désolé, ça ne marche pas j'ai toujours la même erreur
N° 999999Erreur SQL !
DELETE FROM 'timbresdefrance_collections.mich ' WHERE yvert= 'N° 999999'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''timbresdefrance_collections.mich ' WHERE yvert= 'N° 999999'' at line 1
Re: erreur syntaxe
Posté : 22 oct. 2013, 18:00
par blof
Salut,
une autre :
$sql= "DELETE FROM ".$_SESSION['chemin_collec']." WHERE yvert='".$index."'";
on va y arriver

Re: erreur syntaxe
Posté : 22 oct. 2013, 18:28
par xTG
$sql= "DELETE * FROM ". mysql_real_escape_string($_SESSION['chemin_collec']) ." WHERE yvert='". mysql_real_escape_string($index) ."'";
Toujours protéger les variables injectées dans une requête SQL.
Sinon c'est la porte ouverte au malheur.
Re: erreur syntaxe
Posté : 22 oct. 2013, 19:52
par michel71
celle-ci fonctionne !!
$sql= "DELETE FROM ".$_SESSION['chemin_collec']." WHERE yvert='".$index."'";
Toujours pas compris pourquoi ?
Re: [RESOLU] erreur syntaxe
Posté : 22 oct. 2013, 20:05
par xTG
Hum je pensais le * obligatoire mais à lire la doc mysql ce n'est pas le cas...
La différence fondamentale vient de la protection de la variable injectée pour le nom de table.
Si tu regardes ton message d'erreur on y voit un espace à la fin.
Re: erreur syntaxe
Posté : 22 oct. 2013, 20:11
par blof
Toujours pas compris pourquoi ?
le champ `yvert` est une chaine de caractères et doit être encadré par des simples cotes, ce que tu n'avais pas fait.
Par contre prends bien en compte la remarque de xTG sur les injections SQL
EDIT: j'avais pas vu la réponse de xTG, mais on est pas d'accord. ( et j'ai raison

)
EDIT 2 : on est pas d'accord parce que xTG est sur la code de damien_55 et moi sur le tien. (donc j'ai rien dit)