Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nieprzechwycony błąd:wywołanie funkcji członkowskiej Prepare() przy błędzie zerowym

Po prostu masz kilka błędów w swoim kodzie. Spróbuj użyć tych linii :

Plik połączenia :

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

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

Wyjaśnienia :

  • Musisz przekazać zmienną $connection do swojej klasy użytkowników (lub zaimportować ją za pomocą global $connection; )
  • Twój plik połączenia musi uwidocznić właściwość dbh, w przeciwnym razie nie będziesz w stanie wykonać żadnego zapytania w swojej bazie danych
  • PDO przygotuj() metoda czeka na zapytanie w pierwszym argumencie
  • Nie musisz przekazywać tablicy do metody execute(), jeśli już wcześniej powiązałeś swoje wartości


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RMySQL, błędy pobierania - ostrzeżenie sterownika RS-DBI:(błąd podczas pobierania wierszy)

  2. Optymalizacja indeksu tabeli MySQL

  3. Jak zrobić wewnętrzne złącze w django?

  4. Dopasowanie adresu IP do zakresu adresów IP?

  5. Używanie złączenia z pogrupowanymi wierszami danych