qoonieczko
5.02.2016, 12:30:14
Witam,
Ciężko mi było w tytule umieścić to o co mi chodzi:)
mam taki kod:
<?php
try {
// create a new connection (verify that your web server can communicate with db server and validate credentials)
$conn = new PDO( 'dblib:charset=cp1250;dbname=baza;host=10.1.1.25:1683', 'login', 'haslo' );
// prepare a statement to prevent SQL injections
$stmt = $conn->prepare( "select res_id from tabela where repto_id='21'" );
/* populate the arguments in your prepared statement.
needs to be an array even though there is only one argument. */
$stmt->execute();
// fetch all results
// $locations = $stmt->fetchAll();
while ($row = $stmt->fetch()) {
$stmt2 = $conn->prepare( "select fullname from tabela where res_id='21'" );
$stmt2->execute();
while ($row2 = $stmt2->fetch()) {
}
}
// encode as JSON
// echo json_encode( $locations );
} catch (Exception $e) {
}
?>
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.
nospor
5.02.2016, 12:32:56
while ($row = $stmt->fetchAll()) {
skad wy wytrzaskujecie te potforki?? nie fetchAll a fetch
qoonieczko
5.02.2016, 12:41:44
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
nospor
5.02.2016, 12:45:15
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.
qoonieczko
5.02.2016, 12:49:22
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.
nospor
5.02.2016, 12:57:29
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.
qoonieczko
5.02.2016, 13:10:56
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!
nospor
5.02.2016, 13:15:17
https://bugs.php.net/bug.php?id=65945Czyli jak mowilem pozostaje ci wpierw pobrac dane z pierwszego zapytania lub bawic sie w dwa polaczenia
qoonieczko
5.02.2016, 13:27:16
Tak łatwo się nie poddam

Spróbuje jeszcze zainstalować odbc. Może z tym będzie działać...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.