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

PDO Lỗi nghiêm trọng:Gọi hàm thành viên chuẩn bị () trên một đối tượng không phải

Có một số vấn đề với mã của bạn.

Hai câu trả lời đã được giải thích trong câu trả lời khác, điều này sẽ giúp mã của bạn hoạt động (cuối cùng thì tất cả đều bị hỏng), nhưng đó vẫn là cách tiếp cận sai, cách này sẽ kết nối với cơ sở dữ liệu nhiều gấp nhiều lần số đối tượng mà bạn có .

Thay đổi lớp DatabaseConnection theo cách này

class DatabaseConnection{
    public $pdo;
    public function __construct(){
        $user = 'root';
        $pass = '';
        $dsn  = 'mysql:charset=utf8;dbname=test;host=localhost;charset=utf8';
        $opt  = array(
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        );
        $this->pdo = new PDO($dsn, 'root', '', $opt);
    }
}

Thay đổi hàm tạo LoginRegister theo cách này

function __construct($db){
    $this->db= $db;
}

Và tạo register.php theo cách này

require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);

và sau đó trong Đăng nhập Đăng ký, hãy sử dụng $this->db thay vì $pdo tất cả các cách.

Ý tưởng chính để làm cho kết nối $ db trở thành một dịch vụ bên ngoài cho lớp ứng dụng. Nếu không, tất cả sẽ giống như bị khinh thường trên toàn cầu, nhưng chỉ ở một hình thức khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trường tính toán-toán học CakePHP?

  2. Tính toán xếp hạng phần trăm trong MySQL

  3. Nhập dữ liệu từ cơ sở dữ liệu MySQL vào khung dữ liệu Pandas bao gồm tên cột

  4. Cách tốt nhất để trả về giá trị enum trong MySQL là gì?

  5. Gặp lỗi 1366 Giá trị số nguyên không chính xác:'1' khi nhập tệp