Erreur SQL 1604

Résolu/Fermé
artxtra Messages postés 2 Date d'inscription vendredi 19 octobre 2012 Statut Membre Dernière intervention 19 octobre 2012 - 19 oct. 2012 à 09:50
artxtra Messages postés 2 Date d'inscription vendredi 19 octobre 2012 Statut Membre Dernière intervention 19 octobre 2012 - 19 oct. 2012 à 10:04
Bonjour,

Je cherche à enregistrer mes erreurs 404 dans une BDD avec le script suivant.
$ip = getenv("REMOTE_ADDR");
$req = getenv("SERVER_NAME").getenv("REQUEST_URI");
$ref = getenv ("HTTP_REFERER");
if(!$ref) $ref = 'vide';
$quand = date('d/m/Y H:i:s');
$user_agent = getenv ("HTTP_USER_AGENT");
if(!$user_agent) $user_agent='robot';
$sql = "INSERT INTO 404 () VALUES ('','$ip','$req','$ref','$quand','$user_agent')";
$exec = mysql_query($sql) or die();

le premier champ est une id en autoincrement (TINYINT), les autres sont en VARCHAR
Le serveur me renvoie le message
1064 : 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 '404 () VALUES ('','195.220.246.54','/sdfsd','vide','19/10/2012 09:42:13','')' at line 1

J'ai envie de dire : WTF ???

2 réponses

Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
Modifié par Freedomsoul le 19/10/2012 à 10:05
L'erreur provient de ta requête

"INSERT INTO 404 () VALUES ('','$ip','$req','$ref','$quand','$user_agent')";

lorsque tu mets des parenthèses après le nom de la table c'est pour "personnaliser" les entrées

si tu ne mets pas de parenthèses, cela sous entends que tu rentres les données dans l'ordre des colonnes de ta table.

Il est préférable de préciser les différents champs car comme ça, si tu modifies ta table en ajoutant des colonnes ou autres, ta requete fonctionnera toujours puisque que tu indiqueras quelle valeur est liée au champ.


Donc, pour en revenir à ton problème
précise les nom de colonnes dans ta table:

"INSERT INTO 404 (champ1,champ2,champ3,champ4,champ5,champ6) VALUES ('','$ip','$req','$ref','$quand','$user_agent')"; 


Si l'erreur ne viens pas de là, je pense qu'il s'agit peut-être du nom de ta table qui commence par des chiffres !

il faut ajouter les caractères 'table' pour que ça fonctionne ! (Alt Gr + 7) ou Alt + 96
[Ce ne sont pas des quotes, elles ne passes pas sur le forum !]
(et les nom de table doivent normalement commencer pas de lettre mais bon, après tant pis)
0
artxtra Messages postés 2 Date d'inscription vendredi 19 octobre 2012 Statut Membre Dernière intervention 19 octobre 2012
19 oct. 2012 à 10:04
L'erreur vient bien du nom de la table : j'ai renommé en e404 et ça marche.
Grrrr...

Merci pour le tuyau !
0