Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] PDO w kodzie strukturalnym?
--Początkujący--
post
Post #1





Goście







Chciałbym zmienić obsługe bazy z przestarzałego mysql_connect etc. na pdo.

I mam kilka pytań, php ogarniam tylko strukturalnie i czy warto użyć w takim kodzie pdo i czy działało by to sensownie?

Da się zrobić jakieś stałe połączenie z bazą za pomocą pdo? Czemu pytam? Już pisze.

Poczytałem troche o pdo i chciałem powoli edytować pliki. Mam plik config_db.php gdzie miałem połączenie z bazą - zmieniłem na pdo.

W pliku index.php sklejałem head.php (includuje tam config_db.php oraz func.php), news.php i foot.php. No wszystko działało, połączenie z bazą było, ale tylko do momentu kiedy chciałem użyć funkcji z pliku func.php w foot.php.

Funkcja polegała na tym, że zliczała ilość użytkowników online. Na starym połączeniu, wystarczał tylko plik config_db.php w head.php i zapytania w funkcjach działały wszedzie (head, news, foot), bez połączenia w func.php.

Teraz pdo wypluwa błąd, że nie ma połączenia :< Kiedy dodałem na poczatku funkcji nowe połączenie pdo, to wszystko działało. Widać mało czytałem, ale troche bez sensu, że połączenie nie jest dostępne dla funkcji które są inkludowane zaraz po połączeniu - chyba, że źle coś robie, to przepraszam ;d.

Troche zawile to wyjaśniłem, ale może ktoś się połapie. ;p

Z góry proszę nie pisać coś w stylu: "Naucz się OOP" - próbowałem kilka razy, ale to dla mnie jakaś czarna magia (ucze się sam z kursów na necie ;p)

Tutaj kod, gdyby ktoś chciał: http://wklej.to/i7apF

Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


zamiast # kiedy dodam tutaj nowe poalczenie z baza to dziala
daj :
GLOBAL $db;
Ale osobiście odradzam PDO. Ma za dużo błędów (jak dla mnie). Stare, poczciwe mysql_ najlepsze...

Ten post edytował mmmmmmm 8.05.2013, 17:16:42
Go to the top of the page
+Quote Post
pitu
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


Cytat(mmmmmmm @ 8.05.2013, 18:15:41 ) *
Ale osobiście odradzam PDO. Ma za dużo błędów (jak dla mnie). Stare, poczciwe mysql_ najlepsze...


Ty tak na serio?


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Cytat(pitu @ 8.05.2013, 18:18:11 ) *
Ty tak na serio?

Niestety tak. PDO ma błędy, co gorsza z jakichś powodów nie wykona SQL i zapomni o tym poinformować, Zero komunikatu o błędzie.
Go to the top of the page
+Quote Post
ber32
post
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


mm podaj jakie. Podaj jakie użytkownicy chętnie poznają


--------------------
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(mmmmmmm @ 8.05.2013, 23:34:53 ) *
Niestety tak. PDO ma błędy, co gorsza z jakichś powodów nie wykona SQL i zapomni o tym poinformować, Zero komunikatu o błędzie.


Zgłosiłeś to? To podaj przykład, bo trudno mi uwierzyć że zapomina poinformować o niewykonaniu połączenia.

Ten post edytował !*! 9.05.2013, 08:41:38


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





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

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


Obstawiam że kolega @mmmmmmm machnął sobie jakiegoś wrapera do PDO smile.gif Ale jak reszta czekam na przykład


--------------------
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
mmmmmmm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


JEdne błędy nazywają "ficzerami". Np. taki "ficzer": For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement.
Albo nie zgłaszanie błędu, gdy INSERT/UPDATE nie powiedzie się z powodu błędnego triggera
Go to the top of the page
+Quote Post
!*!
post
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Ok, tylko gdzie ten kod? Pisałeś że PDO jest gorsze bo nie pluje błędami. To jest gorsze, bo zawiera błędy, czy jest gorsze bo nie potrafisz z niego korzystać?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #10





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Kolejny ficzer:
  1. try
  2. {
  3. $result=$database->prepare("INSERT INTO `test`(`imie`) Values( :imie) /* jako :imie2 podam poprawne drugie imie, ale nie zawsze musze */ ");
  4. $result->execute(array(':imie'=>'HELA'));
  5. print_r($result->errorInfo());
  6. }
  7. catch (PDOException $e) {
  8. echo 'Connection failed: ' . $e->getMessage();
  9. }

Oczywiście, nie doczekam się Exception...
Go to the top of the page
+Quote Post
skowron-line
post
Post #11





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

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


A ten wyjątek powinien się pojawić bo questionmark.gif

- jeżeli to całość to w przypadku braku obiektu masz fatala
- execute zwraca true / false

Ten post edytował skowron-line 9.05.2013, 13:44:11


--------------------
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
mmmmmmm
post
Post #12





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Bo zapytanie się nie wykonuje, choć jest prawidłowe. PDO twierdzi, że jest błąd HY093
Go to the top of the page
+Quote Post
skowron-line
post
Post #13





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

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


Cytat(mmmmmmm @ 9.05.2013, 13:45:07 ) *
Bo zapytanie się nie wykonuje, choć jest prawidłowe. PDO twierdzi, że jest błąd HY093

Rozumiem że chodzi tobie o to że w stringu masz komentarz
Cytat
/* jako :imie2 podam poprawne drugie imie, ale nie zawsze musze */

i wyświetla
Kod
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/test/di/index.php on line 11

No i tu pojawia się drugi podpunkt z mojego poprzedniego posta


--------------------
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
ber32
post
Post #14





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Z tego co widzę to wydaje się że !*! ma rację
Cytat
bo nie potrafisz z niego korzystać?


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #15





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Ta. WARNING
Go to the top of the page
+Quote Post
!*!
post
Post #16





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Wyjaśni mi ktoś o co mmmmmmm chodzi?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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 Aktualny czas: 21.08.2025 - 07:43