Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]PDO, Budowa większej aplikacji.
Forum PHP.pl > Forum > Przedszkole
Giluś
Cześć, zamierzam przesiąść się z standardowego MySQL na PDO i jestem przyzwyczajony do tego, że na górze strony dawałem include do pliku który łączy się z MySQL, jak teraz takie coś wykonać z PDO gdy jest taki kod:

  1. try
  2. {
  3. // Inicjujemy, co trzeba
  4. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
  5. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  6.  
  7. }
  8. catch(Exception $exception)
  9. {
  10. die('Wystąpił błąd: '.$exception->getMessage());
  11. }


Próbowałem podzielić to na 2 pliki czyli:


Index.php
  1. <?php
  2. require('./cos1.php');
  3. // Dalszy kod związany nie tylko z pobieraniem danych z mysql.
  4. require('./cos2.php');
  5. ?>


cos1.php
  1. <?php
  2. try
  3. {
  4. // Inicjujemy, co trzeba
  5. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
  6. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  7. ?>


cos2.php
  1. <?php
  2. }
  3. catch(Exception $exception)
  4. {
  5. die('Wystąpił błąd: '.$exception->getMessage());
  6. }
  7. ?>


Ale wiadomo takie coś nie działa wiec, używając PDO, trzeba zawsze na początku łączyć się z mysql i na końcu pliku zamykać to, niż ułatwić sobie sprawę i mieć ten kod w osobnych plikach, wiadomo, że login, haslo itp to sobie mogę zrobić zmienną i dodać ją gdzieś w include dla wszystkich, ale czy nie ma na pewno innego rozwiązania ?.

Pozdrawiam.
amii
W PDO masz możliwość nawiązania twałego połączenia w ten sposób:

  1. $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
  2. PDO::ATTR_PERSISTENT => true
  3. ));
nospor
A czemu o tego:
  1. try
  2.  
  3. {
  4.  
  5. // Inicjujemy, co trzeba
  6.  
  7. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
  8.  
  9. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  10.  
  11.  
  12.  
  13. }
  14.  
  15. catch(Exception $exception)
  16.  
  17. {
  18.  
  19. die('Wystąpił błąd: '.$exception->getMessage());
  20.  
  21. }

Nie wrzucis do jednego pliku tylko z jakiegoś szalonego powodu rozbijasz to na dwa?
sajegib
tylko po oddzielać try i catch? powinno to byc tak jak w 1 listingu
jeśli dobrze zrozumiałem czego ci potrzeba to:
na początku pliku includujesz sobie to co wpisałeś w pierwszym listingu, a na końcu zamykasz połączenie

  1. $pdo = NULL;


ale sensu takiego rozwiązania nie widzę
!*!
Łącz się z bazą wtedy kiedy tego potrzebujesz.
Jedna linijka PDO Cie chyba nie zbawi, a jak już to napisz sobie dobudówkę w postaci

  1. class DBConnect
  2. {
  3. //tu w konstruktorze tworzysz PDO z danymi login haslo itd.
  4. $pdo = new PDO
  5. return $pdo;


A dowołujesz się w kodzie
  1. $db = new DBConnect()
  2. $db->pdo-> // tu normalne zapytania do PDO
nospor
Poza tym, jeśli chcesz mieć jeden ogólny TRY CATCH to poprostu zrób tak:
  1. try {
  2. require('./cos1.php');
  3.  
  4. // Dalszy kod związany nie tylko z pobieraniem danych z mysql.
  5.  
  6. require('./cos2.php');
  7. }
  8. catch(....){
  9. ......
  10. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.