Antes usaba php 5.4 y así es como tenia mi script:
Código
public function Upload() { try { // rollback should revert here // el único cambio es el siguiente // $mysqli->query('START TRANSACTION;'); $mysqli->begin_transaction(); // multiple prepared statements if ($mysqli->commit()) { $exit = $log; } else { throw new Exception('Transaction commit failed. Property ID: ' . $id); } } catch (Exception $e) { try { $test = $this->owner['id'] ? 'property' : ($this->applicant ? 'demand' : 'Fatal Error: PropertyFromInput() contact error (no owner, no applicant)'); $log = 'Rolling back new ' . $test . ' upload' . "\n"; if (!$mysqli->rollback()) $log .= 'no rollback...' . "\n"; if ($test == 'property') $log .= $this->cleanup_prop() ? 'property successfully cleaned up' . "\n" : 'error while cleaning up property' . "\n"; $err_msg = $e->getMessage(); } catch (Exception $f) { $err_msg .= $f->getMessage(); } $usr_msg = $upload_err ? $err_msg : 'Se ha producido un error. Por favor contacte con un administrador.'; $log .= 'User triggered an error while uploading a new ' . $test . ".\n" . 'Error message: ' . $err_msg; } $mysqli->autocommit(TRUE); return $exit; }
Antes funcionaba y ahora ya no. Supongo que se debe a los cambios que ha sufrido php desde entonces.
Estuve leyendo un poco y al parecer decidieron (al fin) implementar el bloque finally, en php 5.5. El otro cambio relevante a esto fue en php 7 donde se mejora el manejo de errores.
Pero sigo sin estar seguro de donde puede estar el fallo. La única utilidad que le veo a finally en mi caso sería poner el autocommit, por que el return deberia ir fuera. Y no sé que más puede estar fallando.
¿Alguna idea? Gracias!