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

PDO i php — wywołanie funkcji członkowskiej Prepare() na obiekcie niebędącym obiektem

@papaja trafiła prosto w gwóźdź w głowę. Twoje połączenie PDO nie powiodło się, dlatego nie masz obiektu PDO, na którym można uruchomić metodę przygotowania.

Poza czubkiem głowy, myślę, że brakuje ci końcowego cytatu w łańcuchu $dsn. Prawdopodobnie chcesz dodać następujące po $this->dbname i przed średnikiem:

. "'"

To pojedynczy cytat w podwójnych cudzysłowach. Używam następującej składni do tworzenia ciągu DSN:

"mysql:host=$this->HOST;dbname=$this->DATABASE"

W każdym razie utwórz plik testowy, aby dokładnie wiedzieć, na czym polega problem. Plik testowy powinien wyglądać tak:

class TestDatabase{

    private $host      = DB_HOST;
    private $user      = DB_USER;
    private $pass      = DB_PASS;
    private $dbname    = DB_NAME;
    private $dbh;


    public function __construct(){

        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;

        $options = array(
            PDO::ATTR_PERSISTENT    => true,
            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        );

        $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
    }
}

Zauważ, że nie uruchamiamy instancji obiektu PDO w bloku try catch. Chociaż nigdy zrób to w środowisku produkcyjnym, będzie to przydatne w twoim teście, ponieważ wyrzuci krytyczny wyjątek zawierający wszystkie szczegóły twojego połączenia.

Teraz stwórz wystąpienie klasy testowej i przejdź do debugowania otrzymanych błędów. Ponownie, będą one bardziej szczegółowe niż poprzedni błąd, ponieważ będzie to niewyłapany wyjątek PDO.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odwrócić bazę danych w środowisku MySQL Workbench

  2. Ostrzeżenie:mysqli_connect():(HY000/1049):Nieznana baza danych tylko w terminalu Mac

  3. Nie można uruchomić usługi MySQL, XAMPP

  4. jakiego zapytania mysql powinienem użyć, aby wybrać kategorię, która pasuje do WSZYSTKICH moich kryteriów?

  5. Różnica między 'AND' i '&&' w SQL