tourer
tourer
Zerknie ktoś z #php ?
https://paste.ofcode.org/36GhbZG7vaiKrf7jKj7ZNkB
Tworzę sobie do tego obiekt klasy Article, wywołuję na nim metodę insert tą z klasy Article no i wali mi błędem Notice: Undefined variable: pdo in C:\xampp\htdocs\articles\Database.php on line 25
Jak to napisać żeby ten pdo z konstruktora był widoczny w tej metodzie? Chyba banał ale nie daję rady
  • Najlepsze
  • Wszystkie komentarze
t.....l
t.....l
@tourer: przede wszystkim $pdo jest widoczne tylko w bloku try. Zdefiniuj pdo jako pole i odnoś się do niego przez $this->pdo
MacDada
Fatal error: Call to a member function exec() on null in C:\xampp\htdocs\articles\Database.php on line 26


@tourer: Dokładnie przecież masz napisane w komunikacie. „Błąd ostateczny”: Odwołanie do funkcji członkowskiej („metody”) o nazwie exec() na null'u. Linia 26.

Co tam robisz w linii 26? $this->pdo->exec($query); Czyli na zmiennej $this->pdo wywołujesz metodę exec. Ta metoda nie istnieje, bo $this->pdo jest NULLem – nie jest obiektem.

Dlaczego jest NULLem? Bo w linii 15
t.....l
t.....l
@tourer:

$pdo = new PDO('mysql:host='.$host.';dbname='.$dbName, $user, $password);
zamień na

$this->pdo = new PDO('mysql:host='.$host.';dbname='.$dbName, $user, $password);
t.....l
t.....l
@tourer: poza tym definiujesz pola jako private, a potem w konstruktorze tworzysz zmienne lokalne, a nie przypisujesz wartości do zdefiniowanych pól
tourer
tourer
tourer Autor
0
@tomash-pl: Ok, zrobiłem tak jak mówiłeś i nie ma już tego błędu :) https://paste.ofcode.org/tuzWynUBp75uZX3Etiaj6R
Ale mam drugi błąd który był już wcześniej i też nie mogę sobie poradzić.
Fatal error: Call to a member function exec() on null in C:\xampp\htdocs\articles\Database.php on line 26 Znalazłem na stacku ten sam błąd ale nie mogę tego zrozumieć do końca.