English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP MySQLi Manuale di Referenza
La funzione mysqli_autocommit() apre o chiude il modello di transazione di submit automatico della connessione del database corrente
Il database MySQL ha una funzionalità chiamata submit automatico. Se la attivi, le modifiche fatte nel database verranno salvate automaticamente; se la disattivi, è necessario salvare esplicitamente le modifiche.mysqli_autocommit() Apri o chiudi il modello di transazione di submit automatico della connessione del database corrente. Per confermare lo stato di submit automatico della transazione della connessione corrente, esegui questa richiesta SQL SELECT @@autocommit .
Questa funzione accetta valori booleani come parametri. Se vienetrueSe passinga a questa funzione, verrà abilitato il modello di transazione di submit automatico; se viene trasmessofalse,则将关闭自动提交事务模式。
mysqli_autocommit($con, $mode);
序号 | 参数及说明 |
---|---|
1 | con(必需) 这是一个表示与MySQL Server的连接的对象。 |
2 | mode(必需) 这是一个布尔值,表示是否应打开自动提交事务模式。 |
PHP mysqli_autocommit()函数返回一个布尔值,成功时为true,失败时为false.
这个方法不会在不支持事务处理的表单查询中生效,如MyISAM或 ISAM。
此函数最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。
假设我们在数据库mydb中创建了一个名为my_team的表,如下所示-
CREATE TABLE my_team( ID INT PRIMARY KEY AUTO_INCREMENT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255) );
以下示例演示了mysqli_autocommit()函数的用法(以面向过程风格)-
<?php //stabilisci la connessione $con = mysqli_connect("localhost", "root", "password", "mydb"); //imposta l'autocommit su false mysqli_autocommit($con, False); //inserisci i record nella tabella my_team mysqli_query($con, "insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')"); mysqli_query($con, "insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')"); mysqli_query($con, "insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')"); mysqli_query($con, "insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')"); //verifica il contenuto della tabella $result = mysqli_query($con, "SELECT * FROM my_team"); print_r($result); //chiudi la connessione mysqli_close($con); ?>
output risultati
mysqli_result Oggetto ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
Poiché abbiamo disattivato l'opzione di transazione automatica nell'esempio precedente, l'aggiunta dei record non verrà salvata nel database, e se verifichi il contenuto della tabella in MySQL, la tabella sarà vuota, come segue;
mysql> select * from my_team; Set vuoto (0.00 sec)
Per salvare le modifiche nel database, è necessario utilizzare la funzione mysqli_commit() alla fine del programma per confermare le modifiche come
mysqli_commit($con);
Se verifichi il contenuto della tabella my_team, vedrai le registrazioni inserite, come segue-
mysql> select * from my_team; +----+------------+------------+----------------+-------------+ | ID | First_Name | Last_Name | Place_Of_Birth | Country | +----+------------+------------+----------------+-------------+ | 1 | Shikhar | Dhawan | Delhi | India | | 2 | Jonathan | Trott | CapeTown | South Africa| | 3 | Kumara | Sangakkara | Matale | Sri Lanka | | 4 | Virat | Kohli | Delhi | India | +----+------------+------------+----------------+-------------+ 4 righe nel set (0.00 sec)
Nello stile orientato agli oggetti, la sintassi di questo metodo è $con-> autocommit()Di seguito è riportato un esempio di questa funzione nello stile orientato agli oggetti;
//stabilisci la connessione $con = new mysqli("localhost", "root", "password", "mydb"); //imposta automaticamente la transazione su true $con->autocommit(FALSE); //inserisci i record nella tabella my_team $con->query("insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')"); $con->query("insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')"); $con->query("insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')"); $con->query("insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')"); //verifica il contenuto della tabella $result = $con->query("SELECT * FROM my_team"); print_r($result); //salva i risultati $con->commit(); //chiudi la connessione $con -> close(); ?>
output risultati
mysqli_result Oggetto ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
La funzione mysqli_autocommit() può anche essere utilizzata come commit() quando chiamata, salvando i risultati della query nel database:
//stabilisci la connessione $con = mysqli_connect("localhost", "root", "password", "mydb"); //crea la tabella mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))"); //imposta l'autocommit su false mysqli_autocommit($con, False); //inserisci i record nella tabella my_team mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India')"); mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica')"); mysqli_autocommit($con, TRUE); //chiudi la connessione mysqli_close($con); ?>
Dopo aver eseguito il programma, se si verifica players se si verifica il contenuto della tabella, allora si può osservare il record aggiunto, come segue -
mysql> select * from players; +------------+-----------+-------------+ | NomePrimo | Cognome | Paese | +------------+-----------+-------------+ | Shikhar | Dhawan | India | | Jonathan | Trott | Sudafrica | +------------+-----------+-------------+ 2 righe nel set (0.00 sec)
<?php $connection = mysqli_connect("localhost", "root", "password", "mydb"); if (mysqli_connect_errno($connection)){ echo "Impossibile connettersi a MySQL: " . mysqli_connect_error(); } mysqli_autocommit($connection, FALSE); mysqli_query($connection, "create table test(Name VARCHAR(255), Age INT)"); mysqli_query($connection, "INSERT INTO test VALUES ('Sharukh', 25)"); mysqli_query($connection, "INSERT INTO test VALUES ('Kalyan', 30)"); mysqli_commit($connection); mysqli_close($connection); ?>
Dopo aver eseguito il programma sopra, se si verifica la tabellatestse si verifica il contenuto della tabella, allora si può vedere che il record inserito è -
mysql> select * from test; +---------+------+ | Nome | Età | +---------+------+ | Sharukh | 25 | | Kalyan | 30 | +---------+------+ 2 righe nel set (0.00 sec)