Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PDO][ODBC] Pobieranie tylko pierwszego rekordu z BD i problem z polskimi znakami
Smertius
post
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Mam dość sporą bazę w Accessie z której muszę pobrać dane z poziomu PHP, łączę się z bazą

  1. try
  2. {
  3. $pdo= new PDO('odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin' /* . array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")*/);
  4. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5. }
  6. catch(PDOException $e)
  7. {
  8. echo "Niestety nie udało się nawiązać połączenia<br>" . $e;
  9. }


I w tym momencie wszystko jest OK, problem pojawia się podczas pobierania danych z Accessa. Zapytanie wykonuję w taki sposób:
  1. $query=$baza->prepare('SELECT * FROM [znaki] ' );
  2. $query->execute();
  3. $wynik=$query->fetch(PDO::FETCH_ASSOC)
;

I w tym momencie pojawia się spory problem, zapytanie powinno zwrócić ok 150 rekordów, a dostaję tylko jeden. Próbowałem kilku wariantów ale skutek jest taki sam, może spotkał się ktoś z takim problemem bo ja już nie mam pojęcia co to może być. Może jest jakiś alternatywny sposób na wyciągnięcie danych z accessa?

Drugi problem to polskie znaki w nazwie tabeli podczas wykonywania zapytania
  1. $query=$baza->prepare('SELECT * FROM [Ilość cięć] ' );

Dostaję błąd
Kod
PDOException: SQLSTATE[42S02]: Base table or view not found: -1305 [Microsoft][Sterownik ODBC Microsoft Access ] Aparat bazy danych Microsoft Jet nie może znale� tabeli wej�iowej lub kwerendy 'IloĹ��ciÄ��. Sprawd� czy ona istnieje oraz czy nazwa jest poprawnie napisana. (SQLExecute[-1305] at ext\pdo_odbc\odbc_stmt.c:254)


Czyli problem jest z kodowaniem, plik ma kodowanie utf-8. Z jakiego kodowania korzystać?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
I w tym momencie pojawia się spory problem, zapytanie powinno zwrócić ok 150 rekordów, a dostaję tylko jeden.
Jakbys łaskawie raczył zajrzać do manuala:
http://pl.php.net/manual/en/pdostatement.fetch.php
to byś się dowiedział że fetch() zwraca właśnie jeden rekord. Jakbyś bardziej wnikliwie przejrzał link co ci podałem, to byś znalazł, iż należy użyć pętli (np. WHILE) by pobrać wszystkie rekordy.

Jakbyś jeszcze poszukał dokładniej linka co ci podałem i zajrzał do POWIĄZANYCH to byś znalazł fetchall() które zwraca wszystko bez pętli
http://pl.php.net/manual/en/pdostatement.fetchall.php

Manual przyjacielem a nie wrogiem....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Smertius
post
Post #3





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Nospor, nawet nie wiesz jak mi głupio zrobiłem błąd jak przedszkolak;)

Kurcze ale dalej nie mogę sobie poradzić z polskimi znakami w nazwach tabel
Go to the top of the page
+Quote Post
zend
post
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Może spróbuj
  1. SELECT * FORM `ąć`
Go to the top of the page
+Quote Post
Smertius
post
Post #5





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Zend, nie bardzo rozumiem o co chodzi.


Gdy ustawię kodowanie na cp-1250 mogę wykonać zapytanie do każdej tabeli, nawet tych które mają polskie znaki w nazwie. Ale teraz powstał nowy problem, wszystkie dane które pobiorę w ten sposób mają krzaki, normalnie patologia. Możliwe żeby Acces korzystał z innego kodowania dla nazw tabel ora innego dla rekordów?
Go to the top of the page
+Quote Post
zend
post
Post #6





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


wątek 1, wątek 2 - nie zagłębiałem się, ale może ona cię naprowadzą. Możesz spróbować wersji extremalnej, pobrania danych i konwersji w momencie wyświetlenia w php
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: 22.08.2025 - 09:14