Jump to content


Photo

Transação Com Mysql No Php


  • Faça o login para participar
2 replies to this topic

#1 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 19/10/2007, 10:36

Olá Feras do PHP, preciso de mais uma força de vcs. Tenho 2 tabelas e preciso iniciar uma transação.

Como ficaria a seguinte estrutura usando banco de dados MySQL:

Begin Transaction

INSERT INTO tab1 values (a, b, c);
INSERT INTO tab2 values (1, 2, 3);

if (não deu erro)
   Commit Transaction;
else
   RollBack Transaction;

Será que alguém poderia ajudar? Não sei se já tem essa dúvida no fórum, pois não consegui fazer funcionar a pesquisa (não retorna nada ou nem vai) acredito que esteja com problemas.

Obrigado antecipadamente

André Milaré

Edição feita por: boirock, 19/10/2007, 11:57.
Use [code] e seja feliz!


#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 19/10/2007, 11:56

Dá uma olhada nisso e nisso
Acho que já vai servir... e viva a MySQLi! hehehe
Qualquer ocisa posta aí!
[] Rafael :boxing:

#3 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 19/10/2007, 13:42

Rafael, obrigado pela dica... Eu estava justamente fuçando no manual quando descobri o MySQLi que é o mysql com injeção eletrônica! hahaha
Fiz assim e deu certo aqui, fica então registrado para futura referencia:

$bolFlagErro = 0;

//Abertura do Banco de Dados com MySQL i
$strConexao = mysqli_connect($conDBHost, $conDBUser, $conDBPass, $conDBBanco)
if (! $strConexao) {
	$strMsgErro = "Ocorreu um erro ao acessar o banco de dados. Erro:" . chr(10) . mysqli_connect_error();
	$bolFlagErro = 1;
	}

// Iniciar Transação
mysqli_autocommit($strConexao, false); // Colocar o autocommit false, para que o código tenha o controle da transação 
	
// Gravar na Tabela 1
$strSQL = "INSERT INTO tab1 (codigo, nome, categoria) VALUES (";
$strSQL .= "'" . $_POST[txtCodigo] . "', ";
$strSQL .= "'" . $_POST[txtNome] . "', ";
$strSQL .= "'" . $_POST[txtCategoria] . ") ";
	
if (! $strRecordSet = mysqli_query($strConexao, $strSQL)) {
	$bolFlagErro = 1;
	$strMsgErro = "Ocorreu um erro ao cadastrar." . chr(10) . "Erro: " . mysqli_error();
	mysqli_rollback($strConexao);
	}

// Gravar na Tabela 2
if ($bolFlagErro == 0) {
	$strSQL = "INSERT INTO tab2 (idCliente, CPF) VALUES (";
	$strSQL .= $_SESSION["gstrIDCliente"] . ", ";
	$strSQL .= "'" . $strCPF . "');";
		
	if (! $strRecordSet = mysqli_query($strConexao, $strSQL)) {
		$bolFlagErro = 1;
		$strMsgErro = "Ocorreu um erro ao cadastrar." . chr(10) . "Erro: " . mysqli_error();
		mysqli_rollback($strConexao);
		}
	else {
		$strMsgErro = "Cadastro efetuado com sucesso!";
		mysqli_commit($strConexao);
		}
	}

		
// Encerrar Conexão
mysqli_close($strConexao);

Vale lembrar que quem usa mysql_query(sql, link) no "I" é o contrário -> mysql_query(link, sql) o resto é quase a mesma coisa!

De qualquer modo, muito obrigado pela ajuda!

Abraços

André Milaré




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq