Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> DBlib - fetch() resetuje fetch() zewnętrzny
qoonieczko
post 5.02.2016, 12:30:14
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.07.2013

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


Witam,

Ciężko mi było w tytule umieścić to o co mi chodzi:)
mam taki kod:
  1. <?php
  2.  
  3. try {
  4. // create a new connection (verify that your web server can communicate with db server and validate credentials)
  5. $conn = new PDO( 'dblib:charset=cp1250;dbname=baza;host=10.1.1.25:1683', 'login', 'haslo' );
  6.  
  7. // prepare a statement to prevent SQL injections
  8. $stmt = $conn->prepare( "select res_id from tabela where repto_id='21'" );
  9.  
  10. /* populate the arguments in your prepared statement.
  11.   needs to be an array even though there is only one argument. */
  12. $stmt->execute();
  13.  
  14. // fetch all results
  15. // $locations = $stmt->fetchAll();
  16. while ($row = $stmt->fetch()) {
  17. echo $row['res_id'];
  18. $stmt2 = $conn->prepare( "select fullname from tabela where res_id='21'" );
  19. $stmt2->execute();
  20. while ($row2 = $stmt2->fetch()) {
  21. echo $row2['fullname'];
  22. }
  23.  
  24. }
  25. // encode as JSON
  26.  
  27. // echo json_encode( $locations );
  28.  
  29. } catch (Exception $e) {
  30. echo $e->getMessage();
  31. }
  32. ?>


Pierwsze zapytanie zwraca 12 wyników. Więc powinienem mieć 12 numerków i co numerek fullname kolesia o nr 21. Mam jednak tylko pierwszy numerek i raz nazwisko. Te zapytanie w środku resetuje te zewnętrzne. Jak jest tylko jedno zapytanie to wyników jest 12. Ma ktoś jakiś pomyśl jak to naprawić? Mam to na ubuntu. Robiłem lokalnie na windowsie i wszystko działało. Tam miałem tylko zamiast dblib- sqlsrv. Będę wdzięczny za wskazówki.

Ten post edytował qoonieczko 5.02.2016, 12:33:58
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 12:32:56
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




while ($row = $stmt->fetchAll()) {
skad wy wytrzaskujecie te potforki?? nie fetchAll a fetch


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

"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
qoonieczko
post 5.02.2016, 12:41:44
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.07.2013

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


Już w pierwszym poście poprawiłem. Próbowałem i tak i tak i nie działa. z fetchAll nie ma nic, a z fetch jest tylko jeden wynik sad.gif
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 12:45:15
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Wyglada jakby twoja baza sie wykladala na buforowaniu. Czemu nie uzyjesz jak czlowiek poprostu LEFT JOIN tylko bawisz sie w zapetlnie zapytan? Przeciez to bezsensu.


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

"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
qoonieczko
post 5.02.2016, 12:49:22
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.07.2013

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


To jest tylko przykładowy kod. Mam zapytania, które muszę się wykonywać w fetchu innego zapytania i nie wyciągniesz tych danych przez joina. Nie sądzę, żeby to była wina bazy, bo ten sam kod na windowsie, ale z biblioteką sqlsrv działa. Tutaj jest coś nie tak z dblib.
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 12:57:29
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No to mowie: widac ze dblib ma problemy z buforowaniem chyba. Poszukaj w necie.

A jakbys podal pelne zapytanie to moze bysmy ci pomogli je napisac poprawnie.

A jesli zadne z moich dwoch 'rozwiazan' ci nie pasuja, to pobierz wpierw dane z pierwszego zapytania do tablicy, a potem iteruj po tej tablicy i rob co tam robisz do tej pory.


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

"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
qoonieczko
post 5.02.2016, 13:10:56
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.07.2013

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


To jest całkiem spora aplikacja i nie uśmiecha mi się tyle zmieniać. Plan był taki, że robię na lokalu, bo szybciej i wygodniej, a potem przenoszę, zmieniam w jednym pliku "sqlsrv" na "dblib" i gotowe. Nie spodziewałem się takich problemów, bo przed wszystkim testowałem czy wszystko działa, ale nie wpadłem na to, żeby sprawdzić czy zapytanie fetchowane w innym fetchu będzie działać. Masakra!
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 13:15:17
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




https://bugs.php.net/bug.php?id=65945
Czyli jak mowilem pozostaje ci wpierw pobrac dane z pierwszego zapytania lub bawic sie w dwa polaczenia


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

"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
qoonieczko
post 5.02.2016, 13:27:16
Post #9





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.07.2013

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


Tak łatwo się nie poddam smile.gif Spróbuje jeszcze zainstalować odbc. Może z tym będzie działać...
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 14:54