$stmt->free_result()
libera memória relacionada a um conjunto de resultados, enquanto $stmt->close()
libera memória relacionada a uma instrução preparada. Subseqüentemente chamando $stmt->close()
cancelará qualquer resultado ainda restante. Em essência, chamar
$stmt->close()
fornecerá o mesmo efeito que chamar $stmt->free_result()
uma vez que cancela o conjunto de resultados também. Mas chamar $stmt->free_result()
não irá limpar a memória usada pela instrução preparada, caso em que você deve usar $stmt->close()
. No que diz respeito a qual usar - pode haver situações em que você pretenda usar a instrução preparada que inicializou, mas não precisa mais do conjunto de resultados que possui atualmente. Nesse caso, você esperaria chamando
$stmt->close()
até que você termine com a instrução preparada e, em vez disso, chame $stmt->free_result()
antes de executar outra instrução.