Piotr Lewandowski

Piotr Lewandowski Programista
aplikacji
internetowych (PHP,
MySQL, SF2, Mag...

Temat: PHP PDO vs PEAR

Witam!

Wlasnie przesiadlem sie z PEAR DB na PDO i troszke dziwnie sie czuje, pomimo tego ze PDO jest wydajniejsze (podobno, nie sprawdzalem jeszcze w swoich aplikacjach). Chcialbym zapytac jakich wraperow, tudziez rozszezen (mysql, mysqli, etc...) uzywacie do laczenia z baza danych? I dla czego?

Mam jedno pytanie przy okazji. Zaznaczam, ze uzywam bazy danych MySQL 5.

PDOStatement->rowCount() zwraca ilosc wierszy usunietych przez DELETE lub zmienionych przez UPDATE, ale nie jest zalecane do zapytan ktore wykonuja SELECT.

Wiec moje pytanie brzmi: jak szybko, prosto i wydajnie policzyc ilosc wierszy zwroconych przez zapytanie SELECT.

W tej chwili rozwizalem to tak:
count($PDOstatement->fetchAll())
Ale mam watpliwosci co do wydajnosci takiego rozwiazania, choc nie wiem czy uzasadnione.

Jakie jest wasze zdanie na ten temat?

Temat: PHP PDO vs PEAR

$rows = $statement->fetchAll();
$count = count($rows); - czyli to samo co Ty robisz .

W dokumentacji jest napisane ze rowCount() nie dziala na zapytaniach 'SELECT' w wiekszosci bazach danych. Jesli dziala na Twoim mySQL to OK. Chyba ze robisz przenosna aplikacje i chcesz zmieniac zrodlo danych w trakcie pisania. (wtedy polecam Propel lub DB2)

Zamiast tego zrob PDO->query() dla SELECT COUNT(*) dla tego samego zapytania dla ktorego chcesz policzyc wyniki wtedy PDOStatement->fetchColumn() aby wyciagnac ilosc zwroconych wierszy.

Ja korzystam z Propel, który jest wbudowany w symfony. Wczesniej DB potem DB2 obecnie caly czas Propel.
Adam Brodziak

Adam Brodziak PHP, football, fun

Temat: PHP PDO vs PEAR

Piotr Lewandowski:
PDOStatement->rowCount() zwraca ilosc wierszy usunietych przez DELETE lub zmienionych przez UPDATE, ale nie jest zalecane do zapytan ktore wykonuja SELECT.
Autorzy PDO chcieli właśnie usnąć takie konstrukcje programistyczne. Dane powinno się pobierać z użyciem kursorów, bo taka jest specyfika baz relacyjnych. Jeśli już musimy policzyć ilość krotek, to stosujemy COUNT() w SQL.
Jarosław Grzelak

Jarosław Grzelak Software Engineer,
StepStone Services
Sp. z o.o.

Temat: PHP PDO vs PEAR

Adam Brodziak:
Piotr Lewandowski:
PDOStatement->rowCount() zwraca ilosc wierszy usunietych przez DELETE lub zmienionych przez UPDATE, ale nie jest zalecane do zapytan ktore wykonuja SELECT.
Autorzy PDO chcieli właśnie usnąć takie konstrukcje programistyczne. Dane powinno się pobierać z użyciem kursorów, bo taka jest specyfika baz relacyjnych. Jeśli już musimy policzyć ilość krotek, to stosujemy COUNT() w SQL.

Dokładnie tak.
Piotr Lewandowski

Piotr Lewandowski Programista
aplikacji
internetowych (PHP,
MySQL, SF2, Mag...

Temat: PHP PDO vs PEAR

Sam sie sobie dziwie ze na to nie wpadlem.... no i to jest przyklad na to jak czlowiek staje sie wiezniem wlasnych przyzwyczajen.

Dzieki za pomoc :)
Paweł Malisak

Paweł Malisak PHP Developer

Temat: PHP PDO vs PEAR

Piotr Lewandowski:
Sam sie sobie dziwie ze na to nie wpadlem.... no i to jest przyklad na to jak czlowiek staje sie wiezniem wlasnych przyzwyczajen.

Dzieki za pomoc :)

Dlatego warto poznać też inne bazy danych, a nie zamykać się i korzystać tylko z jednej ;)

Następna dyskusja:

playSMS na PHP PEAR DB




Wyślij zaproszenie do