sql >> Database teknologi >  >> RDS >> Mysql

PDO Fatal fejl:Kald til en medlemsfunktion prepare() på et ikke-objekt

Der er flere problemer med din kode.

To blev forklaret i det andet svar, som vil få din kode til at fungere (til sidst blev det hele forkælet), men det er stadig forkert tilgang, som vil oprette forbindelse til databasen så mange gange så mange objekter du har .

Skift DatabaseConnection-klasse på denne måde

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

Skift LoginRegister-konstruktør på denne måde

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

Og lav register.php på denne måde

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

og derefter i LoginRegister brug $this->db i stedet for $pdo hele vejen.

Hovedideen at gøre $db-forbindelse til en ekstern tjeneste for applikationsklassen. Ellers vil det være det samme som foragtet global, men bare i en anden form.



  1. Migrering af nogle objekter fra en database til en anden

  2. Kan ikke indlæse godkendelsesplugin 'caching_sha2_password' i Netbean

  3. Opdatering af kolonne baseret på eksisterende felter

  4. Undertrykke MySQL-advarsler?