Добре, значи в първата функция, която се опитвате да замените
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Нека първо изясним какво прави това:
- посочете заявка
- извличане на резултата
- вземете 0. ред („1-ви“ на английски)
- получете колона
user_id
Сега направете това стъпка по стъпка с 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'];
Не е необходимо да указвате реда като fetch_assoc
връща само едно.
Сега за втората функция
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- посочете заявка
- извличане на резултат
- вземете 0. ред
- ако това е равно на 1:върнете
user_id
, в противен случайFALSE
Сега с 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;
Но изчакайте - защо използвах mysqli_fetch_row
тук, докато mysqli_fetch_assoc
беше използвано по-горе? RTM;)
Какво научихме днес? Само защото можете да напишете кода си възможно най-кратко, не означава, че трябва. Ако оригиналният код беше разделен малко повече, преходът към MySQLi трябваше да е доста лесен, тъй като бихте могли лесно да дебъгвате по-малки части вместо сложен израз.