Ok, vì vậy trong hàm đầu tiên, bạn đang cố gắng thay thế
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
Trước tiên, hãy làm rõ điều này có tác dụng gì:
- chỉ định truy vấn
- tìm nạp kết quả
- nhận được 0. hàng ("thứ nhất" bằng tiếng Anh)
- lấy cột
user_id
Bây giờ hãy làm điều này từng bước với 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'];
Bạn không cần chỉ định hàng là fetch_assoc
chỉ trả lại một.
Bây giờ cho chức năng thứ hai
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
- chỉ định truy vấn
- tìm nạp kết quả
- nhận được 0. hàng
- nếu điều này bằng 1:return
user_id
, nếu không thìFALSE
Bây giờ với 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;
Nhưng chờ đã - tại sao tôi lại sử dụng mysqli_fetch_row
ở đây trong khi mysqli_fetch_assoc
đã được sử dụng ở trên? RTM;)
Hôm nay chúng ta đã học được gì? Chỉ vì bạn có thể viết mã của mình càng ngắn càng tốt không có nghĩa là bạn nên làm như vậy. Nếu mã gốc đã được tách ra nhiều hơn một chút, thì việc chuyển đổi sang MySQLi sẽ khá dễ dàng, vì bạn có thể dễ dàng gỡ lỗi các phần nhỏ hơn thay vì một biểu thức phức tạp.