English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A função mysqli_commit() submete uma transação
O banco de dados MySQL possui uma função chamada transação de commit automática (se você a ativar), então as alterações feitas no banco de dados serão salvas automaticamente; se desativada, será necessário salvar explicitamente as alterações.
mysqli_commit()A função salva a transação atual.
mysqli_commit($con, [$flags, $name]);
Número de ordem | Parâmetros e descrição |
---|---|
1 | con (obrigatório) Este é um objeto que representa a conexão com o servidor MySQL. |
2 | flags (opcional) pode ser um dos seguintes constantes:
|
3 | nome (opcional) Este é um valor de nome, quando especificado, será COMMIT /* nome */é executado na forma |
A função mysqli_commit() retorna um valor booleano, se a operação de commit for bem-sucedida, entãoverdadeiro,caso contráriofalso.
Esta função foi introduzida no PHP versão5introduzido e disponível em todas as versões mais recentes.
Suponha que tenhamos criado uma tabela chamada my_team no banco de dados mydb, conforme mostrado-
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) );
A seguir, um exemplo demonstramysqli_commit()Uso da função (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 o 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); mysqli_commit($con); //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 )
Se você verificar o conteúdo da tabela my_team, você pode observar os dados salvos, conforme mostrado-
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)
Método no estilo orientado a objetos, sintaxe:}}$con-> commit()Aqui está um exemplo dessa função no estilo orientado a objetos;
//Estabelecer conexão $con = new mysqli("localhost", "root", "password", "mydb"); //Definir o commit automático como verdadeiro $con-> autocommit(FALSE); //Inserir o 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 )
Vamos olhar para outro exemplo. Aqui, criamos uma tabela, desabilitamos a opção de commit automático, inserimos um registro e salvamos as alterações. Após o salvamento, inserimos outro registro:
//Estabelecer conexão $con = mysqli_connect("localhost", "root", "password", "mydb"); 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 o registro na tabela my_team mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India');") mysqli_commit($con); mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica')"); //fechar conexão mysqli_close($con); ?>
devido ao fato de que ainda não salvamos a consulta de inserção anterior, após a execução do programa acima, se você verificar players do conteúdo da tabela, então só verá um registro, conforme mostrado a seguir-
mysql> select * from players; +------------+-----------+---------+ | Primeiro_Nome | Último_Nome | País | +------------+-----------+---------+ | Shikhar | Dhawan | Índia | +------------+-----------+---------+ 1 linha no conjunto (0.00 seg)
<?php $connection = mysqli_connect("localhost", "root", "password", "mydb"); if (mysqli_connect_errno($connection)){ echo "Conexão MySQL falhou: " . 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); ?>
após executar o programa acima, se você verificar a tabelatestse o conteúdo for-
mysql> select * from test; +---------+------+ | Nome | Idade | +---------+------+ | Sharukh | 25 | | Kalyan | 30 | +---------+------+ 2 linhas no conjunto (0.00 seg)