Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][SQL][PHP]Problem z biblioteką PDO, Jak to sie ma w kodzie
kinder
post 9.08.2011, 19:19:13
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 15.03.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
skowron-line
post 9.08.2011, 21:09:20
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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.  


Ten post edytował skowron-line 9.08.2011, 21:09:45


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:53