8721 sujets

Développement web côté serveur, CMS

Bonjour,

cela fait maintenant plusieurs heures que je bloque sur un truc très très bête, une erreur de syntaxe SQL !!...

Voici mon code PHP :

mysql_query('UPDATE '.$settings->table_users.' SET username = "'.$j_user_username.'", email = "'.$j_user_email.'", key = "'.$j_user_key.'", groups_id = 0, last_visit = "'.$j_user_lastvisitDate.'", register_date = "'.$j_user_registerDate.'", activation = 1 WHERE username = "'.$j_user_username.'"')

Et ci-dessous la structure de ma table :

--
-- Structure de la table `gctd_users`
--

CREATE TABLE IF NOT EXISTS `gctd_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `key` varchar(16) NOT NULL DEFAULT '',
  `groups_id` varchar(25) NOT NULL DEFAULT '',
  `last_visit` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `register_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `activation` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

J'ai essayé avec énormément de méthodes différentes, il me renvoit toujours une erreur...

Cordialement,
Modifié par cocochepeau (25 Nov 2012 - 14:46)
sort ta requête du mysql_query (et passe au PDO ou au mysqli) et fait un echo de ta requête ^^

Tu devrais voir plus simplement l'erreur ^^
Modérateur
Salut,
1 - Quelle est l'erreur ?
2 - Peux tu mettre sur le forum le résultat de cet echo :

$sql = 'UPDATE '.$settings->table_users.' SET username = "'.$j_user_username.'", email = "'.$j_user_email.'", key = "'.$j_user_key.'", groups_id = 0, last_visit = "'.$j_user_lastvisitDate.'", register_date = "'.$j_user_registerDate.'", activation = 1 WHERE username = "'.$j_user_username.'"';
echo $sql;

mysql_query($sql);


3 - As tu essayé ta requete sur phpmyadmin ou dans la console ?
Modifié par niuxe (25 Nov 2012 - 15:29)
Hello,

voici le résultat de l'echo :

UPDATE gctd_users SET username = "cocochepeau", email = "cocochepeau@gmail.com", key = "cxpDVT3p0vp4838W", groups_id = 0, last_visit = "2012-11-25 12:56:58", register_date = "2012-09-17 08:12:13", activation = 1 WHERE username = "cocochepeau" 

L'erreur est la suivante (exécuté sur phpMyAdmin) :

#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 'key = "cxpDVT3p0vp4838W", groups_id = 0, last_visit = "2012-11-25 12:56:58", reg' at line 1


EDIT - J'ai essayé avec un INSERT INTO, donc après avoir retiré les infos déjà en place et ça donne une nouvelle erreur :
#1054 - Unknown column 'cocochepeau' in 'field list'


INSERT INTO `gctd_users`(`username`, `email`, `key`, `groups_id`, `last_visit`, `register_date`, `activation`) VALUES (`cocochepeau`, `cocochepeau@gmail.com`, `cnRYOK3gEHMaRBUe`, 0, `2012-11-25 12:56:58`, `2012-09-17 08:12:13`, 1)

Modifié par cocochepeau (25 Nov 2012 - 16:59)
Modérateur
Je pense savoir pourquoi tu as une erreur. Apparemment syntaxiquement, c'est juste. Refais la même manip sous phpmyadmin sans key='....'. Key doit être réservé
J'ai essayé sans Key, puis avec (renommé en user_key), toujours la même erreur... Smiley fache

D'autant plus que j'ai déjà fais ça avant et ça ne m'avait pas posé de problèmes...

EDIT : Je précise que j'ai testé ça sur phpMyAdmin. Puis j'me suis dis : allez on va voir ce que ça donne en PHP.... Juste en changeant key par user_key ça a fonctionné ! =D

Parcontre j'ai toujours pas compris pourquoi sur phpMyAdmin ça n'a pas marché...
Modifié par cocochepeau (25 Nov 2012 - 17:37)