$stmt->free_result()
освобождава памет, свързана с набор от резултати, докато $stmt->close()
освобождава памет, свързана с подготвено изявление. Впоследствие извикване на $stmt->close()
ще отмени всеки оставащ резултат.
По същество, извикване на $stmt->close()
ще осигури същия ефект като извикването на $stmt->free_result()
тъй като отменя и набора от резултати. Но извикване на $stmt->free_result()
няма да изчисти паметта, използвана от подготвеното изявление, в който случай трябва да използвате $stmt->close()
.
Що се отнася до това кой да използвате - може да има ситуации, в които възнамерявате да използвате подготвения оператор, който сте инициализирали, но вече не се нуждаете от набора от резултати, който имате в момента. В такъв случай ще изчакате да извикате $stmt->close()
докато не приключите с подготвеното изявление и вместо това извикайте $stmt->free_result()
преди да изпълните друг израз.