Mysql
 sql >> Datenbank >  >> RDS >> Mysql

$stmt->close() vs. $stmt->free_result()

$stmt->free_result() gibt Speicher für eine Ergebnismenge frei, während $stmt->close() gibt Speicher frei, der sich auf eine vorbereitete Anweisung bezieht. Anschließend Aufruf von $stmt->close() löscht alle noch verbleibenden Ergebnisse.

Im Wesentlichen Aufruf von $stmt->close() wird denselben Effekt erzielen wie der Aufruf von $stmt->free_result() da es auch die Ergebnismenge löscht. Aber Aufruf von $stmt->free_result() wird den von der vorbereiteten Anweisung verwendeten Speicher nicht löschen, in diesem Fall müssen Sie $stmt->close() verwenden .

Was Sie verwenden sollten - es kann Situationen geben, in denen Sie beabsichtigen, die vorbereitete Anweisung zu verwenden, die Sie initialisiert haben, aber die Ergebnismenge, die Sie derzeit haben, nicht mehr benötigen. In einem solchen Fall würden Sie mit dem Aufruf von $stmt->close() warten bis Sie mit der vorbereiteten Anweisung fertig sind und stattdessen $stmt->free_result() aufrufen bevor eine weitere Anweisung ausgeführt wird.