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

Lỗi biến không xác định trong tập lệnh PHP của tôi

Có nhiều vấn đề với mã của bạn, nguyên nhân chính khiến bạn gặp lỗi là do $usertype$userstatus không được xác định trước và không được xác thực.
Nhưng theo ý kiến ​​của tôi, đó không phải là vấn đề chính với mã của bạn.

Có một vài câu hỏi mà tôi muốn hỏi bạn:

  • Tại sao phải tạo hai vòng lặp nếu bạn cần tìm nạp một hàng?
  • Tại sao phải truy vấn cơ sở dữ liệu hai lần nếu bạn đã biết câu trả lời?
  • Bạn có đang thoát $username không và $password cho các ký tự xấu bằng cách sử dụng mysql_real_escape_string phương pháp?

đây là một ví dụ về cách mã này trông như thế nào:

$query1 = "SELECT user_type,user_staus FROM `user_info` WHERE name='{$username}' AND password='{$password}' LIMIT 1";

$fetched = mysql_query($query1);

//check if record exists otherwise you would receive another notice that can 
//break redirect functionality
if (mysql_num_rows($fetched))
{
    $record = mysql_fetch_assoc($fetched);

    // make sure that value is integer
    if ((int)$record["user_staus"])
    {
        exit("Please login after some time");
    }
    else
    {
        $url = (bool)$record["user_type"] ? 'admin_form.php' : 'user_form.php';

        header("Location: {$url}");

        exit(0);
    }

}
else
{
    echo "please register to login";
}

CẬP NHẬT
Theo đề xuất của nikc.org , đã loại bỏ if cấp 3 lồng vào nhau và được thay thế bằng so sánh bậc ba



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySql:Không thể cập nhật bảng trong hàm / trình kích hoạt được lưu trữ vì nó đã được sử dụng bởi câu lệnh gọi hàm / trình kích hoạt được lưu trữ này

  2. Mã cập nhật PHP / MySQL

  3. Chèn đối tượng chuỗi nhị phân python trong MySQL blob

  4. php, mysql - Lỗi quá nhiều kết nối đến cơ sở dữ liệu

  5. Cách trả lại phần bên trái hoặc bên phải của chuỗi trong MySQL