Erreur SQL 1604 [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
vendredi 19 octobre 2012
Statut
Membre
Dernière intervention
19 octobre 2012
-
Messages postés
2
Date d'inscription
vendredi 19 octobre 2012
Statut
Membre
Dernière intervention
19 octobre 2012
-
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

Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
94
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)
Messages postés
2
Date d'inscription
vendredi 19 octobre 2012
Statut
Membre
Dernière intervention
19 octobre 2012

L'erreur vient bien du nom de la table : j'ai renommé en e404 et ça marche.
Grrrr...

Merci pour le tuyau !