2010-10-02 16 views
0

Ma requête mysql ne met pas à jour correctement ma base de données quelqu'un peut m'aider à résoudre ce problème je pense que cela a quelque chose à voir avec le JOIN.Problème de mise à jour MySQL

Voici ma requête mysql.

"UPDATE users 
SET users.last_login = NOW() 
FROM users JOIN info ON info.user_id = users.user_id 
WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "') 
AND users.password = '" . $sha512 . "' 
AND users.active IS NULL" 

Voici la requête de travail avant d'utiliser JOIN.

"UPDATE users SET last_login = NOW() WHERE (email = '" . $e . "' OR username = '" . $e . "') AND password = '" . $sha512 . "' AND active IS NULL" 
+5

* Dans aucun cas * révèlent ce qui se passe exactement 1. mal; 2. À quoi ressemble l'instruction SQL finale générée; et 3. Quel résultat vous attendez-vous. Sinon, nous aurions manqué tout le plaisir de deviner! –

+0

@Pekka mon dernier login ne se met pas à jour, je m'attends à last_login pour mettre à jour l'heure quand connecté. – HELP

+0

@needHELP vous devez montrer la requête finale avec les valeurs réelles dedans (au lieu des variables PHP) –

Répondre

0

Votre syntaxe de requête est incorrecte. La syntaxe pour la mise à jour de table croisée dans MySQL est quelque peu différente de T-SQL
. Cela devrait être comme ci-dessous.

UPDATE users JOIN info ON info.user_id = users.user_id 
SET users.last_login = NOW() 
WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "') 
AND users.password = '" . $sha512 . "' 
AND users.active IS NULL 

Vérifiez le lien ci-dessous -

http://blog.ookamikun.com/2008/03/mysql-update-with-join.html

+0

pardonner mon ignorance qu'est-ce que T-SQL? – HELP

+1

Découvrez tous les détails de t-sql ici http://en.wikipedia.org/wiki/Transact-SQL – Alpesh

+0

votre mon F *** dans HERO !! – HELP

0

Sans voir les tables ou le SQL généré, je suis juste deviner ici, comme Peeka souligné.

Je suppose que vous avez des données dans vos tables qui permettent au (email = '" . $e . "' OR username = '" . $e . "') de fonctionner. Cependant, ceci est assez ouvert - mettre à jour n'importe quel enregistrement qui a un email OU un nom d'utilisateur. Lorsque vous ajoutez le JOIN il est plus strict - mettre à jour l'enregistrement qui a cet email OU nom d'utilisateur.

Vérifiez votre deuxième mise à jour, je parie que ce n'est pas la mise à jour de l'enregistrement que vous pensez qu'il est. Si c'est le cas, je dirais que vos clés étrangères sont foiré et vous n'avez pas de données correspondantes dans les utilisateurs et les informations. L'un ou l'autre de ces éléments montrerait que le JOIN échoue.

Si cela ne vous aide pas - publiez le SQL résultant et votre schéma.