Ok, więc w pierwszej funkcji, którą próbujesz zastąpić
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Najpierw wyjaśnijmy, co to robi:
- określ zapytanie
- pobierz wynik
- uzyskaj 0. wiersz („1st” po angielsku)
- pobierz kolumnę
user_id
Teraz zrób to krok po kroku za 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'];
Nie musisz określać wiersza jako fetch_assoc
zwraca tylko jeden.
Teraz druga funkcja
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- określ zapytanie
- pobierz wynik
- uzyskaj 0. wiersz
- jeśli to równa się 1:zwróć
user_id
, w przeciwnym razieFALSE
Teraz z 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 czekaj - dlaczego użyłem mysqli_fetch_row
tutaj, podczas gdy mysqli_fetch_assoc
został użyty powyżej? RTM;)
Czego się dzisiaj nauczyliśmy? Tylko dlatego, że możesz napisać swój kod tak krótko, jak to możliwe, nie oznacza, że powinieneś. Gdyby oryginalny kod został nieco bardziej podzielony, przejście do MySQLi powinno być dość łatwe, ponieważ można łatwo debugować mniejsze części zamiast złożonego wyrażenia.