J'essaie de comprendre les procédures stockées MySQL, je veux vérifier si un utilisateur de références de connexion sont valides et si oui, mettez à jour les utilisateurs statut en ligne:Utiliser SELECT pour exécuter resultset UPDATE requête avec MySQL Procédures stockées
-- DROP PROCEDURE IF EXISTS checkUser;
DELIMITER //
CREATE PROCEDURE checkUser(IN in_email VARCHAR(80), IN in_password VARCHAR(50))
BEGIN
SELECT id, name FROM users WHERE email = in_email AND password = in_password LIMIT 1;
-- If result is 1, UPDATE users SET online = 1 WHERE id = "result_id";
END //
DELIMITER ;
Comment puis-je faire cette instruction si-basée sur le nombre de résultats resultsets == 1 ou ID IS NOT NULL?
@Bill: Y at-il un avantage à utiliser SELECT vs RETURN ou les paramètres OUT? –
Le premier code de cette réponse fonctionne très bien, merci pour la réponse. Il a fallu du temps pour comprendre mais maintenant j'ai compris. :-) À l'heure actuelle, je crypte mes mots de passe (pas MD5 et à sens unique) trois fois et deux d'entre eux en utilisant différents sels et en utilisant différentes méthodes de cryptage, donc je pensais que ce serait suffisant. Une telle corde me semble vraiment difficile à bruteforce.Ces choses semblaient être un résumé du lien que vous m'avez donné. Y avait-il autre chose que vous pensiez? – Tirithen
Non, si vous utilisez une fonction de hachage forte et un sel aléatoire par utilisateur, cela devrait suffire. Je craignais que vous stockiez des mots de passe en texte brut puisque vous ne faisiez que comparer le mot de passe in_password au champ de la base de données avec l'opérateur '='. À votre santé! –