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

Kesalahan fatal PDO:Panggilan ke fungsi anggota prepare() pada non-objek

Ada beberapa masalah dengan kode Anda.

Dua dijelaskan dalam jawaban lain, yang akan membuat kode Anda berfungsi (akhirnya semuanya rusak), tetapi pendekatannya masih salah, yang akan menghubungkan ke database sebanyak objek yang Anda miliki .

Ubah kelas DatabaseConnection dengan cara ini

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);
    }
}

Ubah konstruktor LoginRegister dengan cara ini

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

Dan buat register.php dengan cara ini

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

dan kemudian di LoginRegister gunakan $this->db bukannya $pdo sepanjang jalan.

Ide utama untuk membuat koneksi $db sebagai layanan eksternal untuk kelas aplikasi. Kalau tidak, semuanya akan sama saja dengan hina global, tetapi hanya dalam bentuk lain.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara sederhana untuk menjumlahkan hasil dari UNION di MySql

  2. Apa cara terbaik untuk mendapatkan total # catatan dalam tabel mysql dengan php?

  3. Perintah Laravel berdasarkan hubungan hasmany

  4. Bagaimana saya bisa memilih baris dengan ID tertinggi di MySQL?

  5. Butuh bantuan untuk memahami objek koleksi produk Magento dan katalog/model produk