Update nao atualiza meu banco de dados

20 respostas Resolvido
php
W

Bom dia, estou com problemas de atualização de banco. O problema é que o código não da erro.
Já entra no if como se tivesse feito a alteração. Na execução não apresenta erro de mysql.

Alguém pode me ajudar?

<?php session_start(); include_once("conexao.php"); $code = filter_input(INPUT_POST, 'CODE',FILTER_SANITIZE_NUMBER_INT); $codequipamento = filter_input(INPUT_POST,'codequipamento',FILTER_SANITIZE_NUMBER_INT); $codequ2 = filter_input(INPUT_POST,'codequ2',FILTER_SANITIZE_NUMBER_INT); $complexidade = filter_input(INPUT_POST,'complexidade',FILTER_SANITIZE_NUMBER_INT); $equipamento = filter_input(INPUT_POST,'equipamento',FILTER_SANITIZE_STRING); $area = filter_input(INPUT_POST,'area',FILTER_SANITIZE_STRING); $valorUnitario = filter_input(INPUT_POST,'valorUnitario',FILTER_SANITIZE_NUMBER_INT); $perCManuANO = filter_input(INPUT_POST,'perCManuANO',FILTER_SANITIZE_NUMBER_INT); $vidaUtilemAnos = filter_input(INPUT_POST,'vidaUtilemAnos',FILTER_SANITIZE_NUMBER_INT); $regradeCriticidade = filter_input(INPUT_POST,'regradeCriticidade',FILTER_SANITIZE_NUMBER_INT); $mp_periodicidade = filter_input(INPUT_POST,'mp_periodicidade',FILTER_SANITIZE_NUMBER_INT); //echo "CODequipamento: $codequ2
"; $result_equipamento="UPDATE Equipamento1 SET CODequipamento= '$codequipamento', CODequ2= '$codequ2', Complexidade= '$complexidade',Equipamento= '$equipamento', Area= '$area', ValorUnitario= '$valorUnitario',PerCManuANO= '$perCManuANO',VidaUtilemAnos= '$vidaUtilemAnos', RegradeCriticidade= '$regradeCriticidade', MP_periodicidade= '$mp_periodicidade' WHERE CODE= '$code'"; $resultado_equipamento = mysqli_query($conn, $result_equipamento) or die ('Erro: '. mysqli_error($conn)); if(mysqli_affected_rows($conn) != -1) { $_SESSION['msg']= "

Equipamento Editado com Sucesso!

"; header("Location: listar.php"); }else{ $_SESSION['msg']= "

Equipamento nao Editado com Sucesso!

"; header("Location: Edit_equipamento.php?CODE=$code"); }

20 Respostas

R

Rapaz, da um tapa nesse código ai pra exibir melhor pra gente kkkkkk

Mas te adianto, para ver mensagens de erro no php, melhor ativar isso no topo do script:

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
...

E os erros de mysqli vc pega usando:

https://www.w3schools.com/php/func_mysqli_error.asp

W

Obrigado amigo. Ele ta organizado, mas quando copio ele para ca ele fica assim tudo junto, vc tem um email ou skype que possa te mandar ele?

W

SO lembrando que ele nao da erro algum, ele conecta no banco normalmente, pois esse script é de edição de dados no banco, então ele conecta porque tras os dados para editar, mas quando faço alguma alteração, ele entra no if e informa que os dados foram alterados com sucesso, mas quando vc pucha o mesmo equipamento do banco, ele n sofreu nenhuma alteração.

Isso que esta acontecendo.

R

Bom dia. Uma sugestão é rever essa linha “if(mysqli_affected_rows($conn) != -1)”, pois pode estar retornando 0 (Nenhum registro foi alterado) e entrando no seu “else” de sucesso.

W

SIm, acabei de alterar o if para “if(mysqli_affected_rows($conn) != 0)” e ele caiu no else.

W

Eu definitivamente não sei o que pode estar acontecendo, sou novo nessa área de programação, comecei a um mês e meio por ai, por isso no grau de dificuldade.

R

Tente imprimir o comando sql “$result_equipamento”.

$result_equipamento=“UPDATE Equipamento1 SET CODequipamento= ‘$codequipamento’, CODequ2= ‘$codequ2’, Complexidade= ‘$complexidade’,Equipamento= ‘$equipamento’, Area= ‘$area’, ValorUnitario= ‘$valorUnitario’,PerCManuANO= ‘$perCManuANO’,VidaUtilemAnos= ‘$vidaUtilemAnos’, RegradeCriticidade= ‘$regradeCriticidade’, MP_periodicidade= ‘$mp_periodicidade’ WHERE CODE= ‘$code’”;

echo($result_equipamento);
die();

E veja se seu comando SQL está certo. Copie e tente rodar diretamente no banco.

W

Imprimiu:

UPDATE Equipamento1 SET CODequipamento= ‘123444444’, CODequ2= ‘1213’, Complexidade= ‘13232’,Equipamento= ‘ADB’, Area= ‘HGHGHGH’, ValorUnitario= ‘1235’,PerCManuANO= ‘154586’,VidaUtilemAnos= ‘251548’, RegradeCriticidade= ‘15185’, MP_periodicidade= ‘1515’ WHERE CODE= ‘’

So o CODE que nao saiu nada!

W

Ele imprimiu já com as alterações que eu fiz nos dados.

R

Pois é, aí está o problema. O code não está sendo coletado corretamente em:

$code = filter_input(INPUT_POST, ‘CODE’,FILTER_SANITIZE_NUMBER_INT);

Agora remova a impressão do sql e tente imprimir o code.



$code = filter_input(INPUT_POST, CODE,FILTER_SANITIZE_NUMBER_INT);

echo("O código recebido é: ".$code);

die();


R

Depois remova as aspas ‘’ do parâmetro code, pois é um inteiro.

$result_equipamento=“UPDATE Equipamento1 SET CODequipamento= ‘$codequipamento’, CODequ2= ‘$codequ2’, Complexidade= ‘$complexidade’,Equipamento= ‘$equipamento’, Area= ‘$area’, ValorUnitario= ‘$valorUnitario’,PerCManuANO= ‘$perCManuANO’,VidaUtilemAnos= ‘$vidaUtilemAnos’, RegradeCriticidade= ‘$regradeCriticidade’, MP_periodicidade= ‘$mp_periodicidade’ WHERE CODE= $code”;

Abs…

W

Deu isso na primeira sugestão que me deu:

O c�digo recebido �:

Agora vou tirar as "

W

Ao tirar aa ’ ’ deu esse erro

Erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1

W

Estou buscando estas informações da de um outro código criado abaixo: O primeiro código que enviei acima, esta no script “proc_edita_equipa.php”. Já o código abaixo está no escript “Edit_equipamento”.

<?php session_start(); include_once("conexao.php"); $code = filter_input(INPUT_GET, 'code',FILTER_SANITIZE_NUMBER_INT); $result_equipamento = "SELECT * FROM Equipamento1 WHERE CODE = '$code'"; $resultado_equipamento = mysqli_query ($conn, $result_equipamento); $row_equipamento = mysqli_fetch_assoc($resultado_equipamento); ?>
<head>
	<meta charset="utf-8">
	<title>EDITAR EQUIPAMENTOS </title>
</head>
<body>
	<a href="index.php">Cadastrar</a><br>
	<a href="listar.php">Listar</a><br>
	<h1>EDITAR EQUIPAMENTOS</h1>
	<?php
	if(isset($_SESSION['msg'])){
		echo($_SESSION['msg']);
		unset($_SESSION['msg']); //Destruir variavel global.
	}
	?>
	<form method="post" action="proc_edita_equipa.php">
		<table>
			<td><td><td><td><input type="hidden"name="code" value="<?php echo 
                            $row_equipamento['CODE'];?>"> <br /></td>
		</tr> </tr>
		<tr>
		<td>CODequipamento:</td></td>
			<td><td><td><td><input type="text" name="codequipamento"size="30"value="<?php echo $row_equipamento['CODequipamento'];?>"> <br /></td>
		</tr> </tr>
		<tr>
		<td>CODequ2</td></td>
			<td><td><td><td><input type="text" name="codequ2"size="30"value="<?php 
                              echo $row_equipamento['CODequ2'];?>"> <br /></td>
		</tr> </tr>
		<table>
		<tr>
		<td>Complexidade:</td></td>
                           <td><td><td><td><td><td><td><td><td><td><input type="text" 
                            name="complexidade" size="30"value="<?php echo 
                             $row_equipamento['Complexidade'];?>"> <br /></td>
		</tr> </tr>
		<tr>
		<td>Equipamento:</td></td>
			<td><td><td><td><td><td><td><td><td><td><input type="text" name="equipamento" size="30"value="<?php echo $row_equipamento['Equipamento'];?>"> <br /></td>
		</tr> </tr>
		<table>
		<tr>
		<td>Area:</td></td>
			<td><td><td><td><td><td><td><td><td><td><td><input type="text" 
                           name="area" size="30"value="<?php echo $row_equipamento['Area'];?>"> <br 
                            /></td>
		</tr> </tr>
		<tr>
		<td>ValorUnitario:</td></td>
			<td><td><td><td><td><td><td><td><td><td><td><input type="text" 
                            name="valorUnitario" size="30"value="<?php echo 
                            $row_equipamento['ValorUnitario'];?>"> <br /></td>
		</tr> </tr>
		<table>
		<tr>
		<td>PerCManuANO:</td></td>
			<td><td><td><td><td><td><input type="text" name="perCManuANO" 
                             size="30"value="<?php echo $row_equipamento['PerCManuANO'];?>"> <br /> 
                             </td>
		</tr> </tr>
		<tr>
		<td>VidaUtilemAnos:</td>
			<td><td><td><td><td><td><input type="text" name="vidaUtilemAnos" 
                             size="30"value="<?php echo $row_equipamento['VidaUtilemAnos'];?>"><br /> 
                             </td>
		</tr>
		<table>
		<tr>
		<td>RegradeCriticidade:</td></td>
			<td><td><input type="text" name="regradeCriticidade" size="30"value="<?php 
                             echo $row_equipamento['RegradeCriticidade'];?>"> <br /></td>
		       </tr> </tr>
		<tr>
		<td>MP_periodicidade:</td></td>
			<td><td><input type="text" name="mp_periodicidade" size="30"value="<?php 
                             echo $row_equipamento['MP_periodicidade'];?>"> <br /></td>
		</tr> </tr>
		</table>				
		
		<input type=submit value="Editar">
	</form>
</body>
R

Substitua CODE por code (minusculo):


include_once(“conexao.php”);

$code = filter_input(INPUT_POST, <strong>‘code’</strong>,FILTER_SANITIZE_NUMBER_INT);

$codequipamento = filter_input(INPUT_POST,‘codequipamento’,FILTER_SANITIZE_NUMBER_INT);

…

Pois o name do input na tela está como (name=“code”) e é essa a chave que vem no request.

Att…

W

Então o que eu faço?

R
Solucao aceita
<?php session_start(); include_once("conexao.php"); $code = filter_input(INPUT_POST, 'code',FILTER_SANITIZE_NUMBER_INT); $codequipamento = filter_input(INPUT_POST,'codequipamento',FILTER_SANITIZE_NUMBER_INT); $codequ2 = filter_input(INPUT_POST,'codequ2',FILTER_SANITIZE_NUMBER_INT); $complexidade = filter_input(INPUT_POST,'complexidade',FILTER_SANITIZE_NUMBER_INT); $equipamento = filter_input(INPUT_POST,'equipamento',FILTER_SANITIZE_STRING); $area = filter_input(INPUT_POST,'area',FILTER_SANITIZE_STRING); $valorUnitario = filter_input(INPUT_POST,'valorUnitario',FILTER_SANITIZE_NUMBER_INT); $perCManuANO = filter_input(INPUT_POST,'perCManuANO',FILTER_SANITIZE_NUMBER_INT); $vidaUtilemAnos = filter_input(INPUT_POST,'vidaUtilemAnos',FILTER_SANITIZE_NUMBER_INT); $regradeCriticidade = filter_input(INPUT_POST,'regradeCriticidade',FILTER_SANITIZE_NUMBER_INT); $mp_periodicidade = filter_input(INPUT_POST,'mp_periodicidade',FILTER_SANITIZE_NUMBER_INT); //echo "CODequipamento: $codequ2"; $result_equipamento="UPDATE Equipamento1 SET CODequipamento= '$codequipamento', CODequ2= '$codequ2', Complexidade= '$complexidade',Equipamento= '$equipamento', Area= '$area', ValorUnitario= '$valorUnitario',PerCManuANO= '$perCManuANO',VidaUtilemAnos= '$vidaUtilemAnos', RegradeCriticidade= '$regradeCriticidade', MP_periodicidade= '$mp_periodicidade' WHERE CODE= $code"; $resultado_equipamento = mysqli_query($conn, $result_equipamento) or die ('Erro: '. mysqli_error($conn)); if(mysqli_affected_rows($conn) > 0) { $_SESSION['msg']= "Equipamento Editado com Sucesso!"; header("Location: listar.php"); }else{ $_SESSION['msg']= "Equipamento nao Editado com Sucesso!"; header("Location: Edit_equipamento.php?CODE=$code"); }
R

Weslley, funcionou?

W

Fiz… Se eu tiro a ‘’ do CODE= $code , ele da esse erro:
Erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1

Se eu coloco as ‘’ no CODE= ‘$code’ , ele da isso quando mando imprimi para mim na tela:
O codigo recebido e:

W

Funcionou agora meu amigo…graça a você, muito obrigado pela ajuda. Tem como te avaliar em algum lugar?

Criado 21 de novembro de 2018
Ultima resposta 22 de nov. de 2018
Respostas 20
Participantes 3