Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Czyli pojecie funkcji powinienes znać, mam racje? Nigdy nie śledziełem webdeva od Pana Mirosława, bo nie było mi potrzebne. No i mam nadzieje, że umiesz w angielski.
- https://github.com/xandros15/cr-pasjainformatyki-php-2/blob/master/backend/Database.php <- to coś możemy wysłać w do normalnej funkcji:
- http://hastebin.com/ukagusiwam.php
- Przekazujemy do funkcji tablice ze zmiennymi, które zawierają dane do połączenia (host,user,pasword,db_name). // $options
- Tworzymy dns za pomocą sprintfa. Czyli normalny string z opcjami do jakiego typu bazy mamy się połączyć i gdzie ta baza się znajduje. //$dns
- Tworzymy obiekt PDO, (tak samo jak ty tworzyłeś obiekt mysqli) po przez danie danych DNS, loginu, hasła. Dodajemy również atrybut SET NAMES utf8, by czytało polskie znaki. //$connection
- Następna linika... w sumie nie wiem, co dokladnie robi, ale poprawia pewne błędy
- //więcej o setAttribute: http://php.net/manual/pl/pdo.setattribute.php
- Następna linia zmienia Errmode na exceptiony. Czyli obsługe wyjątków, które możesz łapać. Polecam zobaczyć jakiś poradnik, o co chodzi z wyjątkami. Na razie nie jest ci to potrzebne, ale będzie i to bardzo. Ogólnie Chodzi o to, by nie pisać na razie czegoś takiego: if($connect->connect_errno!=0), bo to żadna kontorla.
- Pod koniec zwracamy skonfigurowany obiekt PDO, który przy query nawiązuje połączenie z bazą danych (podobnie jak w przypadku obiektu mysqli).
- Powiedź, na ile mnie zrozumiałeś, byśmy mogli przejsć dalej.
- > . Tylko nie będzie lepiej jak powiesz mi gdzie popełniłem błąd w kodzie?
- Nie, jeśli cały kod jest błędem. To że działa, nie oznacza że nie jest błędnie napisany.
- To lecimy dalej:
- https://github.com/xandros15/cr-pasjainformatyki-php-2/blob/master/backend/config/routing.php#L41-L47
- Trochę to przeróbmy:
- Mamy $db ze starego kodu, więc powinno wyglądać to tak:
- http://hastebin.com/omulolixoq.php
- Obiekt pdo udostępnia nam pare metod, w tym prepare, które pomoże nam przygodować query do wykonania.
- Czyli przygotowujemy query:
- 'SELECT * FROM `uzytkownicy` WHERE `user` = ? limit 1'
- tłumaczenie:
- "Zaznacz wszystko z tabeli użytkownicy, gdzie kolumna user będzie równa ?. Daj tylko jeden wynik"
- znak "?" jest ważny, bo na jego podstawie tworzymy bindy (połączenia). Coś w stylu %s w sprintf.
- Następnie wykonujemy to zapytanie dodając parametr login. W twoim wypadku powinien być $_POST['login'] w tablicy. Czyli coś takiego:
- $statment->execute(array($_POST['login']));
- execute przyjmuje jako parametr tablice, dlatego wstawiamy $_POST['login'] do tablicy. Ile znaków "?" mieliśmy w query, tyle powinno być elementów w tablicy, ustawionych w odpowiedniej kolejności.
- Ostatecznie pobieramy pierwszy rekord z zadanego zapytania (query) i wstawiamy go do obiektu.
- Jeśli wolisz tablice od obiektów, (tak samo jak użycie twojego $connect_veryfication->fetch_assoc();)
- możesz użyć PDO::FETCH_ASSOC zamiast PDO::FETCH_OBJ.
- Powiedź, czy rozumiesz do tego momentu?
- Jeśli tak, napisz sobie kod przy użyciu tego co opisałem, ale nie przekazuj zmiennej $_POST['login'], tylko wpisz dostępny login, a następnie użyj funkcji var_dump():
- echo '<pre>';
- var_dump($user);
- to powinno ładnie wyświetlić tobie wynik usera.
- Powiedź, czy wszystko dobrze ci poszło.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement