Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd niezdefiniowanej zmiennej w moim skrypcie PHP

Jest wiele problemów z twoim kodem, głównym powodem otrzymania błędu jest to, że $usertype i $userstatus nie są predefiniowane i nie są zweryfikowane.
Ale moim zdaniem nie jest to główny problem z twoim kodem.

Jest kilka pytań, które chciałbym Ci zadać:

  • Po co tworzyć dwie pętle, jeśli chcesz pobrać jeden wiersz?
  • Po co dwukrotnie przeszukiwać bazę danych, jeśli znasz już odpowiedź?
  • Czy uciekasz od $username i $password dla złych znaków za pomocą mysql_real_escape_string metoda?

oto przykład, jak ten kod powinien wyglądać:

$query1 = "SELECT user_type,user_staus FROM `user_info` WHERE name='{$username}' AND password='{$password}' LIMIT 1";

$fetched = mysql_query($query1);

//check if record exists otherwise you would receive another notice that can 
//break redirect functionality
if (mysql_num_rows($fetched))
{
    $record = mysql_fetch_assoc($fetched);

    // make sure that value is integer
    if ((int)$record["user_staus"])
    {
        exit("Please login after some time");
    }
    else
    {
        $url = (bool)$record["user_type"] ? 'admin_form.php' : 'user_form.php';

        header("Location: {$url}");

        exit(0);
    }

}
else
{
    echo "please register to login";
}

AKTUALIZUJ
Zgodnie z sugestią nikc.org , usunięto 3 poziom if zagnieżdżanie i zastępowane porównaniem trójskładnikowym



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konfiguracja mysql5 Macports pod Snow Leopard

  2. Wyświetl wszystkie dane tabeli MySQL w tabeli html

  3. Jaka jest zaleta używania try {} catch {} w porównaniu z {} else {}

  4. SQL:Jak mogę zaktualizować wartość w kolumnie tylko wtedy, gdy ta wartość jest pusta?

  5. Normalizuj wszystkie znaki UTF8 do najbardziej standardowego formatu