sql >> Databáze >  >> RDS >> Mysql

Nedefinovaná chyba proměnné v mém skriptu PHP

S vaším kódem je mnoho problémů. Hlavním důvodem, proč se vám zobrazuje chyba, je $usertype a $userstatus nejsou předdefinované a nejsou ověřeny.
Ale podle mého názoru to není hlavní problém s vaším kódem.

Rád bych se vás zeptal na několik otázek:

  • Proč vytvářet dvě smyčky, když potřebujete načíst jeden řádek?
  • Proč dvakrát dotazovat databázi, když už znáte odpověď?
  • Unikáte z $username a $password pro špatné znaky pomocí mysql_real_escape_string metoda?

zde je příklad, jak by měl tento kód vypadat:

$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";
}

AKTUALIZACE
Jak navrhuje nikc.org , odstraněna 3. úroveň if vnoření a nahrazeno ternárním srovnáním



  1. O MySQL++, GPL a LGPL

  2. Více volání array_agg() v jednom dotazu

  3. Jak předám seznam jako parametr v uložené proceduře?

  4. Vše, co potřebujete vědět o standardech kódování pro dotazy SQL