Advertisement
Guest User

PDOOOooOOOoo

a guest
Aug 31st, 2016
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. 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.
  2.  
  3. https://github.com/xandros15/cr-pasjainformatyki-php-2/blob/master/backend/Database.php <- to coś możemy wysłać w do normalnej funkcji:
  4.  
  5. http://hastebin.com/ukagusiwam.php
  6.  
  7. Przekazujemy do funkcji tablice ze zmiennymi, które zawierają dane do połączenia (host,user,pasword,db_name). // $options
  8.  
  9. 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
  10.  
  11. 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
  12.  
  13. Następna linika... w sumie nie wiem, co dokladnie robi, ale poprawia pewne błędy
  14. //więcej o setAttribute: http://php.net/manual/pl/pdo.setattribute.php
  15.  
  16. 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.
  17.  
  18. Pod koniec zwracamy skonfigurowany obiekt PDO, który przy query nawiązuje połączenie z bazą danych (podobnie jak w przypadku obiektu mysqli).
  19.  
  20. Powiedź, na ile mnie zrozumiałeś, byśmy mogli przejsć dalej.
  21.  
  22. > . Tylko nie będzie lepiej jak powiesz mi gdzie popełniłem błąd w kodzie?
  23. Nie, jeśli cały kod jest błędem. To że działa, nie oznacza że nie jest błędnie napisany.
  24.  
  25. To lecimy dalej:
  26.  
  27. https://github.com/xandros15/cr-pasjainformatyki-php-2/blob/master/backend/config/routing.php#L41-L47
  28.  
  29. Trochę to przeróbmy:
  30. Mamy $db ze starego kodu, więc powinno wyglądać to tak:
  31. http://hastebin.com/omulolixoq.php
  32.  
  33. Obiekt pdo udostępnia nam pare metod, w tym prepare, które pomoże nam przygodować query do wykonania.
  34.  
  35. Czyli przygotowujemy query:
  36. 'SELECT * FROM `uzytkownicy` WHERE `user` = ? limit 1'
  37. tłumaczenie:
  38. "Zaznacz wszystko z tabeli użytkownicy, gdzie kolumna user będzie równa ?. Daj tylko jeden wynik"
  39.  
  40. znak "?" jest ważny, bo na jego podstawie tworzymy bindy (połączenia). Coś w stylu %s w sprintf.
  41.  
  42. Następnie wykonujemy to zapytanie dodając parametr login. W twoim wypadku powinien być $_POST['login'] w tablicy. Czyli coś takiego:
  43.  
  44. $statment->execute(array($_POST['login']));
  45.  
  46. 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.
  47.  
  48. Ostatecznie pobieramy pierwszy rekord z zadanego zapytania (query) i wstawiamy go do obiektu.
  49.  
  50. Jeśli wolisz tablice od obiektów, (tak samo jak użycie twojego $connect_veryfication->fetch_assoc();)
  51. możesz użyć PDO::FETCH_ASSOC zamiast PDO::FETCH_OBJ.
  52.  
  53. Powiedź, czy rozumiesz do tego momentu?
  54.  
  55. 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():
  56. echo '<pre>';
  57. var_dump($user);
  58.  
  59. to powinno ładnie wyświetlić tobie wynik usera.
  60. Powiedź, czy wszystko dobrze ci poszło.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement