Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP przez ODBC nie pobiera wszystkich wierszy
ZenekN
post
Post #1





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


Witam posiadam bazę danych w Pervasive, łączę się przez ODBC

wykonuję poniższy kod i otrzymuje tylko 1335 rows, a w bazie jest ponad 70,000

ale jak pobiorę jedno rows dla id 71743 to wtedy pobiera
Cytat
'SELECT * FROM "products" WHERE "id" = 71743';


  1. $connect=odbc_connect("Driver={Pervasive ODBC Client Interface};ServerName=alfa;ServerDSN=TEST;",
  2. "Master", "12345678", SQL_CUR_USE_ODBC);
  3.  
  4.  
  5. $query = 'select * from "products"';
  6. $result = odbc_exec($connect, $query);
  7.  
  8. $lp = 1;
  9. while(odbc_fetch_row($result)){
  10. $name = odbc_result($result, 11);
  11. echo $lp++.'-'.$name;
  12. }


Ten post edytował ZenekN 5.10.2017, 16:46:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Neutral
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Zamiast tego:
  1. $query = 'select * from "products"';

Nie powinno być czasem tak:
  1. $query = 'select * from `products`';

albo tak:
  1. $query = 'select * from products';

?

Ten post edytował Neutral 5.10.2017, 16:48:52
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




@Neutral naprawde myslisz ze bledna skladnia zapytania, ktora powinna generowac blad powoduje, ze baza zwraca tylko 1000 rekordow zamiast bledu?

I nie, nie powinno byc tak jak mowisz poniewaz baza to nie mysql
Go to the top of the page
+Quote Post
ZenekN
post
Post #4





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


ogólnie problem dosyć irytujący na stacku też go widać niektórzy twierdzą że jak skrypt natrafia na pusty znak to pętla nie przechodzi dalej i trzeba dopisać znak '\n'
ale jednak nic nie pomaga

myślałem że pomoże set_time_limit albo max_execution_time ale też nic

Ten post edytował ZenekN 5.10.2017, 17:10:54
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Może jakoś naprowadzą i pomogą:
https://stackoverflow.com/questions/4454695...urning-all-rows
http://www.tek-tips.com/viewthread.cfm?qid=1477829
https://stackoverflow.com/questions/1101338/php-with-oledb

Ten post edytował trueblue 5.10.2017, 17:45:02
Go to the top of the page
+Quote Post
Neutral
post
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


https://www.sitepoint.com/community/t/sql-l...-access/1018/11
http://www.triconsole.com/php/php-odbc.php
http://board.phpbuilder.com/showthread.php...ogress-problems
https://social.msdn.microsoft.com/Forums/sq...sqldriverforphp

http://php.net/manual/pl/function.odbc-num-rows.php
Sprawdź ile ta funkcja zwraca Ci wierszy.

https://stackoverflow.com/questions/7367414...return-all-rows
Nie wiem, czy zamienienie tego na inną funkcję, w tym wypadku ODBC_fetch_array rozwiąże sprawę.

Ten post edytował Neutral 5.10.2017, 17:29:34
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


W ostatnim linku, który podałeś, autor pobiera jednocześnie rekordy poprzez odbc_fetch_row i w środku pętli poprzez odbc_fetch_array, i w tym tkwi przyczyna jego problemu.
Go to the top of the page
+Quote Post
ZenekN
post
Post #8





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


voila trueblue!

działa

  1. $r = 1;
  2. $row = 7000;
  3. while ($r < $row) {
  4. odbc_fetch_into($result,$x,$r);
  5. echo $x[10];
  6. echo '<br/>';
  7. $r++;
  8. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:03