Ok, så i den första funktionen försöker du ersätta
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Låt oss först klargöra vad detta gör:
- ange fråga
- hämta resultatet
- få 0. rad ("första" på engelska)
- hämta kolumnen
user_id
Gör nu detta steg-för-steg med 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'];
Du behöver inte ange raden som fetch_assoc
returnerar endast en.
Nu till den andra funktionen
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- ange fråga
- hämta resultat
- få 0. rad
- om detta är lika med 1:returnera
user_id
, annarsFALSE
Nu med 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;
Men vänta - varför använde jag mysqli_fetch_row
här medan mysqli_fetch_assoc
användes ovan? RTM;)
Vad har vi lärt oss idag? Bara för att du kan skriva din kod så kort som möjligt betyder det inte att du borde. Om den ursprungliga koden hade splittrats upp lite mer borde övergången till MySQLi ha varit ganska enkel, eftersom du enkelt kunde ha felsökt mindre delar istället för ett komplext uttryck.