English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A função mysqli_autocommit() abre ou fecha o modo de submissão automática de comando de transação da conexão de banco de dados atual
O banco de dados MySQL possui uma característica chamada submissão automática. Se você a ativar, as alterações feitas no banco de dados serão salvas automaticamente; se desativar, será necessário salvar explicitamente as alterações.mysqli_autocommit(); abrir ou fechar o modo de submissão automática de comando de transação da conexão de banco de dados atual. Para confirmar o estado atual de submissão automática de transação da conexão, você pode executar esta solicitação SQL SELECT @@autocommit .
Este função aceita valores booleanos como parâmetros. Severdadeiropassados para esta função, o modo de transação de submissão automática será ativado; se passarfalsoentão o modo de transação de submissão automática será desativado.
mysqli_autocommit($con, $mode);
Número de ordem | Parâmetros e descrição |
---|---|
1 | con (obrigatório) Este é um objeto que representa a conexão com o MySQL Server. |
2 | mode (obrigatório) Esta é uma valor booleano que indica se deve abrir o modo de transação de submissão automática. |
A função PHP mysqli_autocommit() retorna um valor booleano, verdadeiro no caso de sucesso.verdadeiro, no caso de falha parafalso.
Este método não funcionará em consultas de formulários que não suportam transações, como MyISAM ou ISAM.
Esta função foi introduzida no PHP versão5introduzido e pode ser usado em todas as versões mais altas.
Suponha que tenhamos criado uma tabela chamada my_team no banco de dados mydb, conforme mostrado a seguir:-
CREATE TABLE my_team( ID INT PRIMÁRIA CHAVE AUTO_INCREMENT, Primeiro_Nome VARCHAR(255), Último_Nome VARCHAR(255), Local_de_Nascimento VARCHAR(255), País VARCHAR(255) );
O exemplo a seguir demonstramysqli_autocommit();Uso da função (no estilo procedimental)-
<?php //Estabelecer conexão $con = mysqli_connect("localhost", "root", "password", "mydb"); //Definir o commit automático como falso mysqli_autocommit($con, False); //Inserir registro na tabela 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')"); //Verificar o conteúdo da tabela $result = mysqli_query($con, "SELECT * FROM my_team"); print_r($result); //fechar conexão mysqli_close($con); ?>
Resultados de saída
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
Como já desligamos a opção de commit automático no exemplo anterior, a adição de registros não será salva no banco de dados e, se você verificar o conteúdo da tabela no MySQL, a tabela estará vazia, conforme mostrado a seguir;
mysql> select * from my_team; Conjunto vazio (0,00 seg)
Para salvar as alterações no banco de dados, é necessário usar a função mysqli_commit() no final do programa para submeter as alterações como:
mysqli_commit($con);
Se você verificar o conteúdo da tabela my_team, você verá os registros inseridos, conforme mostrado a seguir:-
mysql> select * from my_team; +----+------------+------------+----------------+-------------+ | ID | Primeiro_Nome | Último_Nome | Local_de_Nascimento | País | +----+------------+------------+----------------+-------------+ | 1 | Shikhar | Dhawan | Delhi | Índia | | 2 | Jonathan | Trott | Cape Town | África do Sul | | 3 | Kumara | Sangakkara | Matale | Sri Lanka | | 4 | Virat | Kohli | Delhi | Índia | +----+------------+------------+----------------+-------------+ 4 linhas no conjunto (0.00 seg)
No estilo orientado a objetos, a sintaxe deste método é: $con-> autocommit();Aqui está um exemplo da função nessaestyle orientada a objetos;
//Estabelecer conexão $con = new mysqli("localhost", "root", "password", "mydb"); //Definir o commit automático como verdadeiro $con-> autocommit(FALSE); //Inserir registro na tabela 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')"); //Verificar o conteúdo da tabela $result = $con-> query("SELECT * FROM my_team"); print_r($result); //Salvar resultados $con-> commit(); //fechar conexão $con -> close(); ?>
Resultados de saída
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
A função mysqli_autocommit() pode ser usada como commit() ao ser chamada, ela salvará o resultado da consulta no banco de dados:
//Estabelecer conexão $con = mysqli_connect("localhost", "root", "password", "mydb"); //Criar tabela mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))") //Definir o commit automático como falso mysqli_autocommit($con, False); //Inserir registro na tabela 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); //fechar conexão mysqli_close($con); ?>
执行程序后,如果您验证 players 的内容,则可以观察添加的记录,如下所示-
mysql> select * from players; +------------+-----------+-------------+ | Primeiro_Nome | Último_Nome | País | +------------+-----------+-------------+ | Shikhar | Dhawan | Índia | | Jonathan | Trott | África do Sul | +------------+-----------+-------------+ 2 linhas no conjunto (0.00 seg)
<?php $connection = mysqli_connect("localhost", "root", "password", "mydb"); if (mysqli_connect_errno($connection)){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_autocommit($connection, FALSE); mysqli_query($connection, "create table test(Name VARCHAR(255), Idade 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); ?>
执行以上程序后,如果验证表test的内容,则可以看到插入的记录为-
mysql> select * from test; +---------+------+ | Nome | Idade | +---------+------+ | Sharukh | 25 | | Kalyan | 30 | +---------+------+ 2 linhas no conjunto (0.00 seg)