commit
Scopri la funzione mysqli_commit() in PHP per eseguire il commit di una transazione MySQL, con esempi e gestione degli errori.
In questo articolo ci concentreremo sulla funzione mysqli_commit() in PHP, utilizzata per eseguire il commit di una transazione in MySQL. Forniremo una panoramica della funzione, del suo funzionamento e degli esempi di utilizzo.
Introduzione alla funzione mysqli_commit()
La funzione mysqli_commit() è una funzione procedurale integrata in PHP che esegue il commit della transazione corrente per una connessione a un database MySQL. Risulta utile quando si desidera salvare in modo permanente le modifiche apportate a una tabella del database — come aggiornamenti o eliminazioni — all'interno di un blocco di transazione. Si noti che l'equivalente orientato agli oggetti è il metodo $mysqli->commit().
Come utilizzare la funzione mysqli_commit()
L'utilizzo di mysqli_commit() richiede una connessione MySQLi valida e una transazione avviata (in genere disabilitando l'autocommit). Ecco un esempio procedurale di base:
Utilizzo di base di mysqli_commit()
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
// Disable autocommit to start a transaction
mysqli_autocommit($mysqli, false);
// execute queries using the connection
// Commit the transaction
$result = mysqli_commit($mysqli);
if ($result) {
echo "Transaction committed successfully.";
} else {
echo "Transaction commit failed: " . mysqli_error($mysqli);
}
mysqli_close($mysqli);
?>Parametri e valore restituito:
$mysqli: la risorsa di connessione MySQLi restituita damysqli_connect().$transaction(opzionale): una string che specifica il nome della transazione (supportato in MySQL 8.0+).- Restituisce:
truein caso di successo,falsein caso di errore.
Utilizzo avanzato
La funzione mysqli_commit() può gestire nomi di transazione ed è spesso abbinata alla gestione degli errori per garantire l'integrità dei dati. Se un commit fallisce, è generalmente necessario eseguire il rollback della transazione. Ecco un esempio che illustra una corretta gestione degli errori e l'utilizzo del parametro opzionale per il nome della transazione:
Utilizzo avanzato di mysqli_commit()
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
mysqli_autocommit($mysqli, false);
// execute queries using the connection
// Commit with an optional transaction name
$result = mysqli_commit($mysqli, "my_transaction");
if (!$result) {
echo "Commit failed: " . mysqli_error($mysqli);
// Roll back changes if commit fails
mysqli_rollback($mysqli);
}
mysqli_close($mysqli);
?>In questo esempio, disabilitiamo l'autocommit, eseguiamo le query e tentiamo il commit utilizzando un nome di transazione specifico. Se mysqli_commit() restituisce false, intercettiamo l'errore e chiamiamo mysqli_rollback() per annullare le modifiche, garantendo la coerenza del database.
Conclusione
In conclusione, mysqli_commit() è una funzione procedurale affidabile per eseguire il commit delle transazioni in MySQL all'interno di script PHP. Comprendendo i suoi parametri, i valori restituiti e la corretta gestione degli errori, è possibile gestire in modo sicuro le modifiche al database. Ricorda che l'equivalente orientato agli oggetti $mysqli->commit() si comporta in modo identico, ma viene chiamato come metodo su un oggetto MySQLi.