Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][SQL][PHP]Problem z biblioteką PDO
Forum PHP.pl > Forum > Przedszkole
kinder
Witam, zaczynam się uczyć biblioteki PDO i mam w pliku db.php nastepujący kod łączący z bazą:
  1. try
  2. {
  3. $pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  4. echo 'Połączenie nawiązane!';
  5. }
  6. catch(PDOException $e)
  7. {
  8. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  9. }
  10.  


w pliku index.php jest include do db.php, oczywiście wszystko łączy poprawnie, ale mam kilka pytań:
1. Jak nie zostało nawiązane połączenie nie ma żadnego komunikatu - jak wyświetlić to echo z wyjątku??
2. W jakiej formie mam zadać zapytanie do bazy i gdzie je umieścić bo wg instrukcji wszystko zawiera się w bloku try{} przykład:
  1. try
  2. {
  3. $pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root');
  4. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5.  
  6. $stmt = $pdo -> query('SELECT id, nazwa, opis FROM produkty');
  7. echo '<ul>';
  8. foreach($stmt as $row)
  9. {
  10. echo '<li>'.$row['nazwa'].': '.$row['opis'].'</li>';
  11. }
  12. $stmt -> closeCursor();
  13. echo '</ul>';
  14. }
  15. catch(PDOException $e)
  16. {
  17. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  18. }
  19.  
  20.  


To jak za każdym razem zadając chce wysłać zapytanie do bazy to muszę dawać nowy blok try{} - no i wtedy pliczek db.php nie będzie potrzebny... Jak to jest w praktyce?
skowron-line
Cytat
1. Jak nie zostało nawiązane połączenie nie ma żadnego komunikatu - jak wyświetlić to echo z wyjątku??

Tu normalnie powinien Ci się pokazać tekst
Cytat
PoĹ?Ä?czenie nie mogĹ?o zostaÄ? utworzone: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

Cytat
2. W jakiej formie mam zadać zapytanie do bazy i gdzie je umieścić bo wg instrukcji wszystko zawiera się w bloku try{} przykład:


Tak jak napisałeś w przykładzie to wszystkie te zapytania wykonają się w przypadku kiedy zostanie nawiązane połączenie z bazą w przypadku gdybyś objął tylko połączenie z bazą to oprócz błędu z połączenia posypały by Ci się błędy z wykonania zapytań więc
- albo zostawiasz jak jest
- albo przerywasz wykonywanie skryptu w przypadku kiedy nie ma połączenia z bazą danych
  1. try
  2. {
  3. $pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  4. echo 'Połączenie nawiązane!';
  5. }
  6. catch(PDOException $e)
  7. {
  8. die('Połączenie nie mogło zostać utworzone: ' . $e->getMessage());
  9.  
  10. }
  11.  
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.