[php] odp->free()

0

Witam,

mam problem z zwalnianiem rezultatów, a dokładniej mam kilka zapytań do bazy danych w jednym kodzie i gdy poprzedni wynik miał np. 20 wyników, a następny 3 wyniki to tylko 3 wyniki są nadpisywane, a pozostałe 17 z starego zapytania zostają ....

$bd=mysqli(...);
$zap="select * from cos";
$odp=$bd->query($zap);
$ile=$odp->num_rows; // np. jesli tu wynosi 20 wyników to mimo iż kolejne zapytanie zwraca mniej wynikó i tak zmienna dalej ma 20 ...
for($i=0;$i<$ile;$i++){
$wiersz=fetch_assoc();
echo $wiersz['pole];
}

//te metody nie pomagają ...
$odp->free();
//$odp->free_result ();

$zap="select * from cos2";
$odp=$bd->query($zap);
$ile=$odp->num_rows; // i tu dalej jest 20 wyników, mimo iż zapytanie zwraca tylko 3, a więc pozostałe 17 wyników zostaje z poprzedniego zapytania
for($i=0;$i<$ile;$i++){
$wiersz=fetch_assoc();
echo $wiersz['pole];
}

co zrobić by wyszyścić te rezultaty z poprzedniego zapytania ... ?

0

o.O Wyczyść tablice $wiersz.

0

nic nie da ... ta tablica ma tylko wynik jednego rekordu z bazy danych przecie i tak ;p

0

w helpie piszą że num_rows zwraca zły wynik jeżeli nie wszystkie rekordy z poprzedniego zapytania zostały wykorzystane
możesz to pominąć chyba przez:

mysqli_free_result($odp);

albo w ogóle nie korzystać z num_rown tylko piszesz tak:

while( $wiersz = $odp->fetch_assoc() )
{
    echo $wiersz['pole'];
}
0

nic nie dało, bo tablica ma po prostu rozmiar z poprzedniego zapytania ... to problem tej tablicy, chyba, że to tylko na moim serwerze takie cuda:| próbowałem na metodizie $odp->fetch_array() ale to samo ...

0

pokaż wklejony kod bo ten wyżej raczej jest przepisany bo nie miałby prawa działać

0
<?php
$bd=mysqli(...);
$zap="select * from cos";
$odp=$bd->query($zap);
$ile=$odp->num_rows;       // np. jesli tu wynosi 20 wyników to mimo iż kolejne zapytanie zwraca mniej wynikó i tak zmienna dalej ma 20 ...
for($i=0;$i<$ile;$i++){
 $wiersz=$odp->fetch_assoc();
 echo $wiersz['pole'];
}

//te metody nie pomagają ...
$odp->free();
//$odp->free_result ();

$zap="select * from cos2";
$odp=$bd->query($zap);
$ile=$odp->num_rows;       // i tu dalej jest 20 wyników, mimo iż zapytanie zwraca tylko 3, a więc pozostałe 17 wyników zostaje z poprzedniego zapytania
for($i=0;$i<$ile;$i++){
 $wiersz=$odp->fetch_assoc();
 echo $wiersz['pole'];
}
?>
0

wszystko działa, dzięki ... temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1