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

Lỗi chưa xuất hiện:Gọi đến một hàm thành viên chuẩn bị () trên lỗi null

Bạn chỉ có những sai lầm somes trong mã của bạn. Hãy thử sử dụng các dòng này:

Tệp kết nối:

<?php
class Connection {
    public $dbh;

    // Setting Database Source Name (DSN)
    public function __construct() {
        $dsn = 'mysql:host=localhost;dbname=employees';
        // Setting options
        $options = array (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
        // Making the connection to the database
        try {
            $this->dbh = new PDO($dsn, 'root', '', $options); 
        }
        catch (PDOException $e) {
            $this->error = $e->getMessage();
        }
    }
}

$connection = new connection();

tệp users.php:

<?php

include 'connection.php';
class Users {
    public $name;
    public $surname;
    public $employmentDate;
    public $connection;

    public function __construct($connection)
    {
        $this->connection = $connection;
        if(isset($_POST['Submit'])) {
            $this->name = $_POST['name'];
            $this->surname = $_POST['surname'];
            $this->employmentDate = $_POST['employmentDate'];
        }
    }

    // Inserting users values to the database table
    public function insertUserValues() {
        $query = 'INSERT INTO employee (name,surname,employment_date) VALUES (:name,:surname,:employmentDate)';
        $stmt = $this->connection->dbh->prepare($query);
        $stmt->bindValue(':name',$this->name, PDO::PARAM_STR);
        $stmt->bindValue(':surname',$this->surname, PDO::PARAM_STR);
        $stmt->bindValue(':employmentDate',$this->employmentDate, PDO::PARAM_STR);
        $stmt->execute();
    }
}   

$users = new Users($connection);
$users->insertUserValues();

Giải thích:

  • Bạn phải chuyển biến $ connect vào lớp người dùng của mình (hoặc nhập biến đó bằng global $connection; )
  • Tệp kết nối của bạn phải hiển thị thuộc tính dbh, nếu không, bạn sẽ không thể thực hiện bất kỳ truy vấn nào trên cơ sở dữ liệu của mình
  • PDO chuẩn bị () phương thức đang đợi một truy vấn trong đối số đầu tiên
  • Bạn không cần phải chuyển một mảng để thực thi phương thức () nếu bạn đã liên kết các giá trị của mình trướ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. cách tìm dữ liệu chính xác giữa vùng đường chéo đã chọn trong truy vấn mysql

  2. Cập nhật bảng MySQL và bỏ qua các mục trùng lặp

  3. Tại sao _ (gạch dưới) khớp với - (gạch nối)?

  4. Làm thế nào để lấy số ngày chênh lệch giữa hai ngày trên MySQL?

  5. Máy chủ MAMP mysql sẽ không khởi động. Không có quy trình mysql nào đang chạy