![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Interesuje mnie jedna rzecz i strasznie mnie gryzie.
Wszędzie jest głośno o wieloplatformowości biblioteki PDO To znaczy, że kod można przenosić pomiędzy innymi serwerami baz danych (Postgre, Mysql, MS SQL itd) Tylko jak to naprawdę z tym jest, patrząc logicznie gdy wykonujemy zapytanie w MYSQL
To jest wszystko Ok, natomiast to samo zapytanie np. w MS SQL wyrzuci błąd, ponieważ nie ma tam LIMIT, jest TOP. Czy PDO samo dba o tą kompatybilność ? jak trzeba to rozwiązywać ? Dzięki z góry za zaspokojenie mojej ciekawości. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Składnie trzeba poprawiać na to rady nie ma.W przypadku użycia np. FULL TEXT SEARCH różnice są już ogromne.Praktycznie wszystko musisz przerabiać(procedury składowe,triggery itp.),to jest całkiem inna baza danych na całkiem innym silniku,nie można sobie tak prosto z importować z MySQL do MSSQL i odwrotnie.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok, ale zawsze to mniej do zmiany niż bez biblioteki PDO
![]() Dzięki wielkie, czuje się lżej ;D |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Widzisz PDO to narzędzie które chroni lepiej przed sql injection poprzez używanie(bindowanie) parametrów w zapytaniach, i nie jest to super konwerter baz danych.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, znam PDO pod tym względem bindValue(), tylko zastanawiała mnie ta jego wieloplatformowość.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Tak będzie działać pod warunkiem ,że samo zapytanie będzie miało odpowiednią strukturę dla okreśonej bazy danych ,a twoim zadaniem jest żeby była ona poprawna.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility. Tyle w temacie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej zastosować Propel, Zend_Db, Doctrine i masz większość problemów z głowy. Inaczej można pisać w PDO ale wtedy sprawdzasz PDO::ATTR_DRIVER_NAME i w zależności od sterownika różne zapytania składać.
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Myślałem też nad Active Record zaprezentowane przez CodeIgnitera, dosyć przyjemne w użytkowaniu
A biblioteka same dba o wieloplatformowość i w pewnym stopniu o bezpieczeństwo. Tylko kwestia wyciągnięcia tej biblioteki z Frameworka, może okazać się nieprzyjemna - ale zobaczy się. W każdym bądź razie, licencja tego frameworka pozwala na takie "wyciąganie" pod kilkoma drobnymi warunkami. Zapytania przez tą biblioteką składa się używając metod $this->select(), $this->where, $this->limit(), $this->join() itd Gorzej z bardziej skomplikowanymi zapytaniami, wtedy już trzeba użyć $this->query(). A wtedy nici z wieloplatformowości, ale chyba jednak na to się zdecyduję, bo nie planuję używać w projekcie jakiś "dziwnych" zapytań. A stawiam priorytet na czytelność kodu, obiektowość oraz wieloplatformowość. Z drugiej strony CodeIgniter korzysta z funkcji mysql_, mssql_ etc, co ma wpływ troszkę na bezpieczeństwo. Bo np. mysql_real_escape_string, można ominąć (przy korzystnych warunkach - kodowania znaków) Ten post edytował Reptile ReX 25.03.2012, 21:18:32 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W sumie to samo masz w Zendzie a adaptery oczywiście pracują na PDO http://framework.zend.com/manual/en/zend.db.html . Dołożyłbyś do tego Cache i piękna sprawa. Może też spodoba Ci się pomysł nowego Zf2 (http://packages.zendframework.com/docs/latest/manual/en/zend.db.html).
Przypomniałeś mi jeszcze o http://www.phpactiverecord.org/ Dla samego MySQL http://www.fabian-spillner.de/mariaquery/ -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 11:06 |