Object of class could not be converted to string - blad podczas dodawania nowego rekordu do bazy danych

Odpowiedz Nowy wątek
2018-10-31 17:15
0

Od niedawna ucze sie obiektowego PHP. Teraz natrafilem na problem ktorego w ogole nie rozumiem i nie daje mi to spokoju. Otoz mam metode ktora powinna dodac nowego usera do bazy danych (podkreslam ze to tylko dummy metoda do nauki bez prepared statements itd):

public function addNewUser($username, $password) {
            $this->$username = $username; 
            $this->$password = $password; 

            $this->connection()->query("INSERT INTO users (username, password) VALUES ($this->$username, $this->$password)"); //Debugger pokazuje blad jest w tej linii
}

Oraz w index.php te 2 linjki

$user = new User();

$user->addNewUser('bob', "123");

I w tym momencie dostaje blad o nazwie: > Object of class User could not be converted to string

Na moje ta metoda powinna dodac 2 parametry $username i $password jako nowy rekord do tabeli users. Więc co powoduje ten problem. Prosze o pomoc.

PS: connection() to metoda klasy Database ktora zwraca mysqli obiekt.

edytowany 1x, ostatnio: melon210, 2018-10-31 17:17

Pozostało 580 znaków

2018-10-31 17:26
0

Po co tworzysz obiekt jeśli potem robisz czysty SQL?

Pozostało 580 znaków

2018-10-31 17:45
0

$this->$username = $username; - jesteś pewien co do tej konstrukcji?


A co jest nie tak? Atrybut tej metody zostanie przypisany do tej zmiennej i tyle. To nie ma działać. Wystarczy, żebym zrozumiał co źle robie. - melon210 2018-10-31 17:50
Atrybut tej metody zostanie przypisany do tej zmiennej? Chyba chciałeś napisać : argument typu string tej metody zostanie przypisany jako parametr tego obiektu. I to nie jest zmienna, tylko parametr, więc zastanów się jeszcze raz nad tym co zaznaczył Patryk27. - itsme 2018-10-31 17:52
@melon210: 1.Nie atrybut metody, tylko parametr. 2.Nie do zmiennej, tylko do pola. 3.Możesz podesłać poradnik z którego uczysz się OOP i w którym jest ta konstrukcja podana? :-) - Patryk27 2018-10-31 18:06
Jeśli chodzi o to, co robisz źle - jest tego trochę, dlatego chcę podejść po kolei ;-) - Patryk27 2018-10-31 18:08
Korzystam z kursu na Udemy - Object Oriented Programming for beginners. Zatrzymałem się na chwilę na poczatku, żeby zobaczyć czy sam rozbuduję klasę User o pare dodatkowych metod. Wcześniej zrobiłem metodę showAllUsers która wyswietla wszystkie rekordy z tabeli users i to działało bez problemu. Wcześniej pisałem PHP proceduralnie więc pewnie i teraz robie to na tej samej zasadzie która jest zła. - melon210 2018-10-31 18:12
I jesteś pewien, że w tym kursie jest $this->$jakiesPole, a nie na przykład $this->jakiesPole? :-) - Patryk27 2018-10-31 18:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0