Ok, så i den første funktion prøver du at erstatte
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Lad os først gøre det klart, hvad dette gør:
- angiv forespørgsel
- hent resultatet
- få 0. række ("1." på engelsk)
- hent kolonne
user_id
Gør nu dette trin-for-trin 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 ikke at angive rækken som fetch_assoc
returnerer kun én.
Nu til den anden funktion
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- angiv forespørgsel
- hent resultat
- få 0. række
- hvis dette er lig med 1:returner
user_id
, ellersFALSE
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 vent - hvorfor brugte jeg mysqli_fetch_row
her hvorimod mysqli_fetch_assoc
blev brugt ovenfor? RTM;)
Hvad har vi lært i dag? Kun fordi du kan skrive din kode så kort som muligt, betyder det ikke, at du skal. Hvis den originale kode var blevet delt lidt mere op, skulle overgangen til MySQLi have været ret nem, da man nemt kunne have fejlrettet mindre dele i stedet for et komplekst udtryk.