Error updating table in Mysql

Asked

Viewed 572 times

2

Well people, I have the error below, when trying to update a table in Mysql and I do not understand why, I am correctly searching the data in the form, but even so, do not let me update, what I do?

<?php

$link = mysqli_connect("localhost","root","","bd_calcadocharme");

$codigo_user=$_POST['codigocli'];
$nome=$_POST['nome'];
$tele=$_POST['telemovel'];
$data_nasc=$_POST ['Data'];
$sexo=$_POST['sexo'];

$Rua=$_POST ['rua'];
$pais=$_POST ['escolher'];
$cidade=$_POST ['cidade'];

$user=$_POST ['user'];
$password=$_POST ['pass'];

echo 'Código do Cliente: '.$codigo_user.'</br>';
echo 'Nome do Cliente: '.$nome.'</br>';
echo 'Nº de Telefone:  '.$tele.'<br>';  
echo 'Data de nascimento: '.$data_nasc.'</br>';
echo 'Sexo: '.$sexo.'<br>'; 
echo 'Rua: '.$Rua.'<br>';   
echo 'País: '.$pais.'</br>';    
echo 'Cidade: '.$cidade.'</br>';    
echo 'Username: '.$user.'<br>';
echo 'Password: '.$password.'<br>';

    $sql="UPDATE clientes SET nome='$nome' , morada='$Rua', datanasc='$data_nasc',  sexo='$sexo', pais='$pais', cidade='$cidade', telemovel='$tele','user='$user', senha='$password' WHERE user='$user'";);
    echo "<p></p>";
    if(mysqli_query($link, $sql)){
        echo "Dados alterados com sucesso!";
    } else {
        echo "Erro ao tentar alterar dados na base de dados!";
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }

?>

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 ''user='Raquel', password='123' WHERE user='Raquel'' at line 1

Generated query:

Error trying to change data in database! ERROR: Could not Able to execute UPDATE clients SET name='odacil' address='doscolhoes', datanasc='1993-10-07', sex='FEM', parents='pt', city='Feijo', telemovel='966622665','user='Raquel', password='123' WHERE user='Raquel'.

1 answer

4

No update has a simple quote left, causing the error:

 'user='$user'
 ^--- aspa a mais.

Just remove it or you can get rid of them all using Prepared statements as below:

$sql = "UPDATE clientes SET 
       nome = ?,
       morada = ?,
       datanasc = ?,
       sexo = ?,
       pais = ?,
       cidade = ?,
       telemovel = ?,
       user = ?,
       senha = ?
    WHERE user = ?";

$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, 'ssssssssss', $nome, $Rua, $data_nasc, $sexo, $pais, $cidade, $tele, $user, $password, $user);

if(mysqli_stmt_execute($stmt)){
    echo "Dados alterados com sucesso!";
}else{
   echo "Erro ao tentar alterar dados na base de dados!";
   echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

The various s in bind_param() define the data type, available data are:

s - string
i - integer
d - double
b - blob

Browser other questions tagged

You are not signed in. Login or sign up in order to post.