Error when updating table in MySQL

2

Well folks, I have the error below, when trying to update in a table in MySQL and I do not understand why, I am correctly searching the data in the form, but even then, it does not let me do the update, which 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   correspond to your MySQL server version for the right syntax to use   near '' user = 'raquel', password = '123' WHERE user = 'raquel' 'at line 1

Query generated:

  

Error trying to change data in database! ERROR: Could not able to   execute UPDATE clients SET name = 'odacil', address = 'doscolhoes',   datanasc = '1993-10-07', gender = 'FEM', country = 'pt', city = 'feijo',   mobile phone = '966622665', 'user =' raquel ', password =' 123 'WHERE user =' raquel '.

    
asked by anonymous 12.06.2015 / 22:25

1 answer

4

No update has a single quotation mark left over, causing the error:

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

Just remove it or you can get rid of all of them using prepared statements like 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, the available ones are:

s - string
i - integer
d - double
b - blob
    
12.06.2015 / 22:30