![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z zapisaniem do pliku rezultatu zapytania PDO. Zawsze robiąc to tak że używałem na rezultacie serialize() i zapisywalem do pliku, niestety z tego co właśnie zauważyłem nie działa mi to z PDO. Ponieważ zwróconego obiektu PDO nie można zserializować. Da sie to jakoś obejsc i posłużyć się którąś z wbudowanych metod PDO by przetworzyć to zapytanie tak aby dalo sie je cachować ? Lub macie może jakieś inne pomysły ? Prosił bym o pomoc.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Obiektu PDO nie zserializujesz, bo się nie da. Jeśli chcesz zapisać rezultat do pliku, sprowadź go do postaci tablicy i ją zserializuj.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 13.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Może SQL_CACHE?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wykonanie zapytanie w PDO, zwraca obiekt PDOStatement, bezpośrednio nie możesz przecież i tak wyświetlić tych danych, do tego używasz jednej z metody PDOStatement: fetch, fetchAll. W ten sposób otrzymujesz wynik w postaci tablicy, którą dalej możesz już serializować. Zamiast robić tego tak:
Kod <?php $query = $pdo->query('SELECT * FROM tabela ORDER BY id DESC'); $cache = serialize($query); spróbuj zrobić to tak: Kod <?php
$query = $pdo->query('SELECT * FROM tabela ORDER BY id DESC'); $cache = serialize($query->fetchAll()); |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Działa! Tylko teraz w dalszej czesci kodu gdzie zamykam obiekt funkcja closeCursor() wywala mi błąd:
Rozumiem że w momencie wykonania funkcji fetchAll() na obiekcie PDO nie trzeba juz później wykonywać closeCursor() tak ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Oj musisz jeszcze poczytać o PDO. Widzisz, w PDO nie można zagnieżdżać zapytań, po zakończeniu pobierania danych z każdego zapytania, musisz je zamknąć metodą closeCursor. A wyglądać będzie to tak:
Ogólnie polecam ci poczytać albo dokumentacje albo chociażby na wikibooks: http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO wpis nawet chyba jednego z użytkowników tego forum (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:58 |