Olá pessoal, venho novamente aqui incomodar vocês
Estou tendo um problema na hora de executar vários updates com mysqli no PHP.
O sistema passa pelas rotinas normalmente, e não exibe mensagem de erro, porém quando olho no banco de dados vejo que os comandos não foram executados.
Segue o código:
//Este código recebe dois Arrays: $status e $idRef
//Ele compila estes Arrays, e faz update de linha por linha de cada Array (vide o código de update para melhor entendimento) através de uma pequena Transação PHP/MySQL
<?php
include "../inc/functions.php";
$dbHOST = "localhost";
$dbUSER = "root";
$dbPASS = "";
$db = "siconp";
$updates = array();
$i = 0;
$status = $_POST["status"];
$idRef = $_POST["idRef"];
if(is_array($_POST["status"])){
$strConexao = mysqli_connect($dbHOST, $dbUSER, $dbPASS, $db);
if (!$strConexao) { //executando e testando se a conexão não foi feita corretamente (ao mesmo tempo)
$erros++;
$resposta[] = "Ocorreu um erro ao acessar o banco de dados. Erro:" . chr(10) . mysqli_connect_error();
}else{
mysqli_autocommit($strConexao, true); // Colocar o autocommit false, para que o código tenha o controle da transação
//INÍCIO DA TRANSAÇÃO
for($i=1 ; $i <= sizeof($updates) ; $i++){
print "<br/>|>>>>>>>>>>>>>".$updates[$i];
if(!$qry = mysqli_query($strConexao,$updates[$i])){//Update de 1 por 1 das linhas criadas lá em cima(se falhar cai na prox linha)
$resposta[] = "Falha ao atualizar linha, por favor Contate o adminitrador! ".mysqli_error();
mysqli_rollback($strConexao);
}
mysqli_commit($strConexao); // executa todos os comandos do mysqli (TODOS JUNTOS)
//NAS PROXIMAS 4 LINHAS, O SISTEMA PEGA O ID DO USUÁRIO E CADASTRA NA TABELA DE UTILIZAÇÃO SUA ÚLTIMA AÇÃO.
$id_usuario = $_SESSION["id_usuario"];
$sqlMax="insert into tb_utilizacao(descricao,data,id_usu) values('Atualizou o status do Referencial ".$idRef[$i]."',now(),'".$id_usuario."')";
$qryMax = mysql_query($sqlMax) or die("".mysql_error());
$arrMax = mysql_fetch_array($qryMax);
}// fim do FOR dos updates
$page = "referenciais.php";
$_SERVER['HTTP_REFERER'] = $page;
redirect($page,"Referenciais alterados com sucesso! ");
}
}else{
$page = "referenciais.php";
$_SERVER['HTTP_REFERER'] = $page;
redirect($page,"Nenhum Referencial foi Alterado! ");
}
//die("<BR>".$status."-".$idRef);
/*
//ABRINDO O BANCO DE DADOS PARA INICIAR A TRANSAÇÃO...
$strConexao = mysqli_connect($dbHOST, $dbUSER, $dbPASS, $db);
if (!$strConexao) { //testando se a coneção não foi feita corretamente ( ! significa NOT )
$erros++;
$resposta[] = "Ocorreu um erro ao acessar o banco de dados. Erro:" . chr(10) . mysqli_connect_error();
}else{
mysqli_autocommit($strConexao, false); // Colocar o autocommit false, para que o código tenha o controle da transação
//INÍCIO DA TRANSAÇÃO
for($i=1 ; $i <= sizeof($updates) ; $i++){
if(!$qry = mysqli_query($strConexao,$updates[$i])){//Update de 1 por 1 das linhas criadas lá em cima(se falhar cai na prox linha)
$resposta[] = "Falha ao atualizar linha, por favor Contate o adminitrador! ".mysqli_error();
mysqli_rollback($strConexao);
}
//NAS PROXIMAS 4 LINHAS, O SISTEMA PEGA O ID DO USUÁRIO E CADASTRA NA TABELA DE UTILIZAÇÃO SUA ÚLTIMA AÇÃO.
$id_usuario = $_SESSION["id_usuario"];
$sqlMax="insert into tb_utilizacao(descricao,data,id_usu) values('Atualizou o status do Referencial ".$idRef[$i]."',now(),'".$id_usuario."')";
$qryMax = mysql_query($sqlMax) or die("".mysql_error());
$arrMax = mysql_fetch_array($qryMax);
}// fim do FOR dos updates
mysqli_commit($strConexao); // executa todos os comandos do mysqli (TODOS JUNTOS)
}//fim do if de conexão
mysqli_close($strConexao); // fecha a conexão da transação
$page = "referenciais.php";
$_SERVER['HTTP_REFERER'] = $page;
redirect($page,"Referenciais alterados com sucesso!");*/
?>
Alguém poderia me ajudar?
Valeuu!