sql >> Databáze >  >> RDS >> Mysql

Nezachycená chyba:Volání členské funkce Prepare() při chybě null

Jen máte v kódu nějaké chyby. Zkuste použít tyto řádky:

Soubor připojení :

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

users.php soubor:

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

Vysvětlivky:

  • Proměnnou $connection musíte předat své třídě uživatelů (nebo ji importovat pomocí global $connection; )
  • Váš soubor připojení musí zviditelnit vlastnost dbh, jinak nebudete moci provádět žádný dotaz na databázi
  • CHOP prepare() metoda čeká na dotaz v prvním argumentu
  • Pokud jste již dříve svázali své hodnoty, nemusíte předávat pole metodě execute()


  1. Kde se spouštěč serveru uloží na SQL Server?

  2. MySQL reverzní i-search

  3. Dosáhněte hierarchie, vztahu rodič/dítě efektivním a snadným způsobem

  4. Jak změnit omezení