Dobře, takže v první funkci, kterou se pokoušíte nahradit
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Nejprve si ujasněme, co to dělá:
- zadejte dotaz
- načtěte výsledek
- získejte 0. řádek („1st“ v angličtině)
- získat sloupec
user_id
Nyní to proveďte krok za krokem pomocí mysqli_
:
//specify query
$result = mysqli_query(connect(),"SELECT `user_id` FROM `users` WHERE `username` = '$username'");
//fetch result
$row = mysqli_fetch_assoc($result);
//get column
return $row['user_id'];
Řádek nemusíte zadávat jako fetch_assoc
vrátí pouze jeden.
Nyní k druhé funkci
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- zadejte dotaz
- načíst výsledek
- získáte 0. řádek
- pokud se rovná 1:vraťte
user_id
, jinakFALSE
Nyní s mysqli_
:
//specify query
$result = mysqli_query(connect(),"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
//fetch result
$row = mysqli_fetch_row($result);
//if first returned column is equal to 1 return $user_id
//otherwise FALSE
return ($row[0]==1) ? $user_id : FALSE;
Ale počkat – proč jsem použil mysqli_fetch_row
zde, zatímco mysqli_fetch_assoc
byl použit výše? RTM;)
Co jsme se dnes naučili? To, že můžete napsat svůj kód co nejkratší, neznamená, že byste měli. Pokud by byl původní kód trochu více rozdělen, přechod na MySQLi by měl být docela snadný, protože jste mohli snadno odladit menší části namísto složitého výrazu.