$stmt->free_result()
uvolňuje paměť související se sadou výsledků, zatímco $stmt->close()
uvolní paměť související s připraveným příkazem. Následně volání $stmt->close()
zruší všechny zbývající výsledky.
V podstatě volání $stmt->close()
poskytne stejný efekt jako volání $stmt->free_result()
protože zruší také sadu výsledků. Ale volání $stmt->free_result()
nevyčistí paměť použitou připraveným příkazem, v takovém případě musíte použít $stmt->close()
.
Pokud jde o to, který z nich použít, mohou nastat situace, kdy máte v úmyslu použít připravený příkaz, který jste inicializovali, ale již nepotřebujete sadu výsledků, kterou aktuálně máte. V takovém případě byste čekali na volání $stmt->close()
dokud nebudete hotovi s připraveným příkazem a místo toho zavoláte $stmt->free_result()
před provedením dalšího příkazu.