Ok, donc dans la première fonction que vous essayez de remplacer
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Commençons par clarifier ce que cela fait :
- spécifier la requête
- récupérer le résultat
- obtenir 0. ligne ("1er" en anglais)
- obtenir la colonne
user_id
Faites maintenant cela étape par étape avec 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'];
Vous n'avez pas besoin de spécifier la ligne comme fetch_assoc
renvoie un seul.
Passons maintenant à la deuxième fonction
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- spécifier la requête
- récupérer le résultat
- obtenir 0. ligne
- si cela vaut 1 :renvoie
user_id
, sinonFALSE
Maintenant avec 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;
Mais attendez - pourquoi ai-je utilisé mysqli_fetch_row
ici alors que mysqli_fetch_assoc
a été utilisé ci-dessus ? RTM ;)
Qu'avons-nous appris aujourd'hui? Ce n'est pas parce que vous pouvez écrire votre code aussi court que possible que vous devriez le faire. Si le code d'origine avait été un peu plus divisé, la transition vers MySQLi aurait dû être assez facile, car vous auriez pu facilement déboguer des parties plus petites au lieu d'une expression complexe.