Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Di chuyển PHP từ mysql_ * sang mysqli_

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL để lấy tổng phụ của một số hàng

  2. SQL:Tham gia vào hai bảng trong đó trên cột là rỗng

  3. Hỗ trợ ràng buộc khóa ngoại trong Rails

  4. Lô hàng MySQL NHibernate thông thạo

  5. Kích thước trường MySql để lưu trữ nội dung email