Wpis z mikrobloga

#naukaprogramowania #php

Rejestracja użytkowników do bazy działa, rekordy się pojawiają. Teraz chcę zrobić walidację aby nie można było zarejestrować 2 razy tej samej nazwy użytkownika.

$login = $_POST['login']; // tutaj mam nazwę z formularza

Rozumiem, że ten poniższy kod działa na takiej zasadzie: wybiera mi z bazy danych wartość login, która jest już zapisana w bazie i porównuje z loginem wpisanym w formularzu i jeżeli te wartości są sobie równe to przyjmowana jest wartość 1, tak? Pole, które przechowuje nazwy użytkownika w bazie nazywa się 'login'.

$query = $db->prepare('SELECT COUNT(login) AS num FROM users WHERE login = $login');
$query->execute();

I teraz, żeby w razie wpisania takiej samej nazwy użytkownika uniemożliwić rejestrację to wystarczy, że napiszę coś takiego?

if($query > 0) {
echo 'Nazwa użytkownika jest już zajęta';
} else {
//rejestracja
}

Mogę to napisać w ten sposób?
  • 6
@PrawyKuba: nie wiem czy $query przechowuje ilość rekordów, a więc czy porównanie $query > 0 ma sens. natomiast z całą pewnością wiem, że sama baza danych powinna mieć login typu UNIQUE, aby nie dopuścić do takiej sytuacji. wówczas można tylko sprawdzićkod komunikatu o duplikowaniu rekordów.
@zolwixx: Zmieniłem na UNIQUE i rzeczywiście już nie jest możliwe utworzenie 2 takich samych użytkowników. Dziękuję. Mógłbyś mi trochę podpowiedzieć odnośnie tego komunikatu? Jest jakoś predefiniowany kod, np. przy próbie dodania rekordu, który już jest w bazie? Czy jakoś powinienem to porównywać z tym, co wpisane jest w formularzu?