Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan Tidak Tertangkap:Panggilan ke fungsi anggota prepare() pada kesalahan nol

Anda hanya memiliki beberapa kesalahan dalam kode Anda. Coba gunakan baris ini :

File koneksi :

<?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();

file 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();

Penjelasan :

  • Anda harus meneruskan variabel $connection ke kelas pengguna Anda (atau mengimpornya dengan global $connection; )
  • File koneksi Anda harus membuat properti dbh terlihat, jika tidak, Anda tidak akan dapat membuat kueri apa pun di database Anda
  • PDO prepare() metode sedang menunggu kueri di argumen pertama
  • Anda tidak perlu meneruskan array ke metode execute() jika Anda sudah mengikat nilai Anda sebelumnya


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan Perubahan di SlickGrid dengan php

  2. Hitungan Atribut Pencarian Segi

  3. Bagaimana menangani pembagian dengan nol secara kondisional dengan MySQL

  4. Django / MySQL:Bagaimana melakukan Transaksi Otonom (hanya melakukan sub-set kueri)?

  5. Cara menjalankan beberapa pernyataan MySQL melalui sampler JDBC di JMeter