Próbuję umożliwić moim użytkownikom logowanie przy użyciu adresu e-mail lub nazwy użytkownika. W tej chwili akceptowana jest tylko nazwa użytkownika. My SQL pracy wygląda następująco:Zaloguj się przy użyciu nazwy użytkownika lub adresu e-mail
$sql = "SELECT * FROM customers WHERE login = '".$username."' AND password = '".$password."'";
Info:
$username
ma wartość$_POST['username']
$password
ma wartośćmd5($_POST['password'])
Teraz chciałbym go przedłużyć na adres e-mail, który klient może wprowadzić w swoim profilu. My SQL wygląda następująco:
$sql = "SELECT * FROM customers WHERE (login = '".$username."' OR email = '".$username."') AND password = '".$password."'";
będę sprawdzić to z SQL:
$result = mysql_query($sql);
mysql_num_rows($result)
Ale w tej chwili nie działa. Jeśli używam OR
w moim SQL, mysql_num_rows
zwraca 0
. Jaki może być problem? Czy istnieje inny i lepszy sposób, aby to osiągnąć?
Twój kod jest w porządku, więc coś innego jest nie tak. Aby ustalić, co to jest, należy uruchomić kwerendy bezpośrednio w bazie danych za pomocą narzędzia phpMyAdmin. Nigdy też nie zapominaj o sprawdzeniu wyniku wywołania 'mysql_query' dla sukcesu i uruchom' mysql_error', aby określić problem, jeśli taki istnieje. –
Wszystkie funkcje 'mysql_' są przestarzałe. Również twój kod jest otwarty na [SQL injections] (http://xkcd.com/327/). A hasła md5 są tylko trochę lepsze niż przechowywanie ich w postaci zwykłego tekstu. – Arjan
Co oznacza "Nie działa"? Podaj więcej szczegółów. Ponadto, podczas pobierania problemów z zapytaniem, zawsze 'echo $ your_query', aby dokładnie wiedzieć, co jest wysyłane do bazy danych. – Jocelyn