$stmt->free_result()
zwalnia pamięć związaną z zestawem wyników, podczas gdy $stmt->close()
zwalnia pamięć związaną z przygotowaną instrukcją. Kolejne wywołanie $stmt->close()
anuluje wszystkie pozostałe wyniki.
W skrócie, wywołanie $stmt->close()
da taki sam efekt jak wywołanie $stmt->free_result()
ponieważ anuluje również zestaw wyników. Ale wywołanie $stmt->free_result()
nie wyczyści pamięci używanej przez przygotowaną instrukcję, w takim przypadku należy użyć $stmt->close()
.
Jeśli chodzi o to, którego z nich użyć - mogą wystąpić sytuacje, w których zamierzasz użyć przygotowanej instrukcji, którą zainicjowałeś, ale nie potrzebujesz już zestawu wyników, który aktualnie posiadasz. W takim przypadku czekałbyś na wywołanie $stmt->close()
dopóki nie skończysz z przygotowaną instrukcją i zamiast tego wywołaj $stmt->free_result()
przed wykonaniem kolejnej instrukcji.