2010-10-02 4 views
0

Je veux être en mesure de vérifier mon email s'il est égal à $e mais mon email est dans une autre table appelée info comment puis-je résoudre ce problème?Problème de tables multiples MySQL?

Voici ma requête MySQL jusqu'à présent.

"SELECT password, salt FROM users WHERE (email = '" . $e . "' OR username = '" . $e . "') AND active IS NULL" 

Répondre

0

Utilisez un JOIN:

SELECT users.password, users.salt 
FROM users 
JOIN info 
ON info.id = users.info_id 
WHERE (users.email = $e OR info.username = $e) 
AND users.active IS NULL 

Note: vous devrez peut-être modifier la ligne de départ ON en fonction de la façon dont vous avez structuré votre schéma. Si vous n'êtes pas sûr de la modification à apporter, mettez à jour votre question pour inclure la sortie SHOW CREATE TABLE users et SHOW CREATE TABLE info.

Vous pouvez également vérifier qu'il n'existe pas de vulnérabilité d'injection SQL dans votre code. C'est une bonne pratique d'utiliser des paramètres, ou au moins de s'assurer que les chaînes sont correctement escaped. Il n'est pas clair à partir de votre extrait de code si vous vous échappez correctement ou non.

+0

Quel est le commentaire sur l'injection SQL? – HELP

+0

@needHelp, il s'agit de [Injection SQL] (http://en.wikipedia.org/wiki/SQL_injection) et si vous demandez ce que c'est, votre site pourrait être confronté à un grand risque. –

+0

@Darin Dimitrov rapide à sauter aux conclusions crois que mon j'utilise un purificateur et échapper à mes données entrées par l'utilisateur. – HELP