Diskuze: MySQL Select pro login uživatele do app

Ostatní jazyky SQL SQL a databáze MySQL Select pro login uživatele do app

Avatar
Elisse
Člen
Avatar
Elisse:

Zdravíčko, rád bych se zeptal na názory jak by měl vypadat SQL dotaz při logování uživatele do aplikace.

Zatím mám něco ve smyslu :

SELECT Username FROM logins WHERE Username='Pepa' AND Password='1234'

A následně v aplikaci :

If ("Pepa".equals(Výstup z DB)
{
        // úspěšně přihlášeno
}
else
{
        / špatné jméno nebo heslo
}

Ale musím říct, že tenhle způsob porovnávání Pepy s Pepou se mi moc nelíbí, je nějaký jiný, hezčí prosím? :)

 
Odpovědět 18. října 10:29
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Elisse
Petr Linhart:
<?php

$db = new PDO('host', 'user', 'password', 'options'); //Připojení k db pokud není jinde

$login = $db->prepare('SELECT username FROM logins WHERE username = ? AND password = ?');
$login->execute(array($username, $password));
$user = $login->fetch();

if (!$user){
    // Zpracování výjimek nebo chyb
}

$_SESSION['user'] = $user;
Editováno 18. října 19:51
 
Nahoru Odpovědět 18. října 19:49
Avatar
Elisse
Člen
Avatar
Odpovídá na Petr Linhart
Elisse:

Já neřekl ani slovo, že jde o PHP :D

Nicméně ve finále je to vlastně mám pocit to stejné ne? Jde mi hlavně o ten SELECT, ten bude asi vždy takovýdle? Neexistuje jen něco jako "If exist"?

 
Nahoru Odpovědět 20. října 8:56
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Elisse
Petr Linhart:

Jo no, nějak sem si pamatoval z minulých diskusí, že jsi řešil php a neuvědomil sem si, že tady jde jen o sql dotaz.

Nicméně SQL dotaz máš správný. Pokud nepotřebuješ vytáhnout z db přímo údaje o přihlašujícím se uživateli tak se dá použít taky

SELECT COUNT(*) FROM logins WHERE username = 'Pepa' AND password = '1234'

to pak vrací 1 pokud byl uživatel nalezen s odpovídajícím heslem a 0 pokud není nalezen nebo nesouhlasí jméno/heslo

jinak je nutné to řešit v kódu aplikace

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 20. října 18:45
Avatar
Elisse
Člen
Avatar
Odpovídá na Petr Linhart
Elisse:

To víš Php řeším v práci a C# a MySQL doma :D

Ty jo to mě vůbec nenapadlo ten count s výsledkem 1/0 je mnohem hezčí , díky ! :)

 
Nahoru Odpovědět 20. října 21:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.