$stmt->free_result()
libera memoria relativa a un set di risultati, mentre $stmt->close()
libera memoria relativa a un'istruzione preparata. Successivamente chiamando $stmt->close()
cancellerà qualsiasi risultato ancora rimanente.
In sostanza, chiamando $stmt->close()
fornirà lo stesso effetto della chiamata a $stmt->free_result()
poiché annulla anche il set di risultati. Ma chiamando $stmt->free_result()
non cancellerà la memoria utilizzata dall'istruzione preparata, nel qual caso è necessario utilizzare $stmt->close()
.
Per quanto riguarda quale usare, potrebbero esserci situazioni in cui intendi utilizzare l'istruzione preparata che hai inizializzato, ma non hai più bisogno del set di risultati che hai attualmente. In tal caso, dovresti aspettare di chiamare $stmt->close()
finché non hai finito con l'istruzione preparata e chiama invece $stmt->free_result()
prima di eseguire un'altra istruzione.