![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 28.06.2009 Skąd: Great Britan Ostrzeżenie: (0%) ![]() ![]() |
Siemanko mam takie pytanie: Czy to jest poprawne? w sensie takim czy tak się używa.
Jak najlepiej robić zapytania i je wysyłać, bo jak tak sobie robie:
to się trochę syf robi, jak dbacie o to by wasz kod był przejżysty przy powtarzających się rzeczach? podzielcie się ![]() -------------------- $progress++;
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
1. Jeżeli pobierasz dane tylko po to aby zliczyć wiersze to używaj COUNT() zamiast mysql_num_rows()
2.
3. Tego typu rzeczy robi się za pomocą funkcji aby jak to już sam zauważyłeś nie brudzić kodu.
A w ogóle było by cudownie gdybyś przerzucił się na PDO. Ten post edytował CuteOne 31.01.2012, 05:25:31 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ad. 2
Dla bardziej skomplikowanych (tak naprawdę po prostu dłuższych) zapytań osobiście polecam wyrzucenie zapytania poza ciało funkcji tak jak zaproponował autor:
Dla dłuższych zapytań niezależnie od tego czy uzywa się funkcji z rodziny mysql_* czy PDO czy czegokolwiek innego (może poza ORM) to dobry zwyczaj bo kod staje się o wiele czytelniejszy a poprawne podzielenie zapytania na linie może jedynie pomóc w jego zrozumieniu przez osoby trzecie, które kiedyś mogą na dany kod zerknąć... I teraz odnosząc się do tego co napisał mój przedmówca - weź sobie do serca tą radę z PDO Autorze - to raz a dwa: mysql_num_rows() jak i jego odpowiednik w PDO czyli pdostatement::rowCount() służą owszem do pobrania liczby rekordów i można z nich korzystać ale tylko gdy pobierasz rekordy w celu ich wyświetlenia (wszystkich) a dodatkowo potrzebujesz znać ich liczbę... Tak jak napisał przedmówca jeśli potrzebujesz z bazy jedynie liczby rekordów spełniającej dane kryteria bardzo mile widziane jest COUNT() ![]() Ten post edytował Sephirus 31.01.2012, 08:52:24 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 28.06.2009 Skąd: Great Britan Ostrzeżenie: (0%) ![]() ![]() |
Wziąć, wziąłem sobie do serca, bo od rana siedzę przy PDO, tyle że już jestem w pierwszym rowie..
mianowicie wcześniej mogłem wysyłać zapytania "globalnie", teraz nie widzę PDO w innych funkcjach, szukałem coś i znalazłem singleton, ale dużo osób to krytykuje.. więc jak? w każdej funkcji mam tworzyć nowe PDO?
like that? Ten post edytował Koldy 31.01.2012, 11:25:59 -------------------- $progress++;
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmm kto krytykuje singleton?? O_o
Zrób singleton - zwracający obiekt PDO już połączony i po krzyku... Nie wiem w czym problem
I tam gdzie potrzebujesz dajesz np:
Ten post edytował Sephirus 31.01.2012, 11:38:57 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 28.06.2009 Skąd: Great Britan Ostrzeżenie: (0%) ![]() ![]() |
Czytałem kilka opini gdzie narzekali na Singleton, że się nie da na kilku bazach pracować itp.
Pewnie teraz mnie rozniesiecie, ale:
Czy zamiast tego mógłbym zrobić:
i to nie było by to samo? -------------------- $progress++;
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Czytałem kilka opini gdzie narzekali na Singleton, że się nie da na kilku bazach pracować itp. E tam dupa. Moim zdaniem singleton jest czasem dobrym wyjściem, a co do połączenia singletona i kilku baz danych to Kohana 2 obsługuje właśnie taki mechanizm, więc jak widać da się. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nikt Cię nie rozniesie
![]() Ale oczywiście to jest zły pomysł w dokładnie takiej formie... dlaczego? Bo każdorazowo łączy się z bazą... Singleton jest powszechnie używany i sprawdzony ![]() Co prawda można przerobić tą funkcję tak by to miało sens - ale nie ma co odkładać na bok sprawdzonych wzorców ;/ A dla tych co mają problem z obsługą wielu różnych połączeń do bazy i singletonem - mam dwa słowa - "fabryka singletonów" ![]() ![]() Zresztą wydaje mi się że każdy prosty DBAL jest zbudowany wstępnie w oparciu o singleton ![]() Przykład pseudo fabryki singletonów do obsługi bazy danych:
EDIT: oczywiście przedstawiłem sam koncept bez obsługi wyjątków i sprawdzania błędów ![]() Ten post edytował Sephirus 31.01.2012, 12:33:22 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Sephirus: nie zgodzę się z Tobą w kwestii wstępnego zapisu zapytania do zmiennej. Jaki to ma sens?
? Koldy: zastanów się czym jest singleton i kiedy się go wykorzystuje a dojdziesz do prostego wniosku, że jest idealny do obsługi bazy danych ![]() ps. również Zend wykorzystuje singleton do obsługi bazy danych ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat : nie zgodzę się z Tobą w kwestii wstępnego zapisu zapytania do zmiennej. Jaki to ma sens? Ano choćby taki, że możesz zrobic echo $query; i sobie sprawdzić co masz nie tak w zapytaniu gdy pluje ci błędem.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:44 |