Como faço para atualizar os valores do database usando a declaração de atualização?

Estou tentando atualizar 'company_name', 'company_add', 'price' como chave primária 'id' mas mostra-me uma mensagem 'something went wrong' juntamente com um erro 'undefined id' . por favor me ajude!

 <?php include('data_conn.php'); if(isset($_POST['sub'])) { $comname=$_POST['cname']; $comadd=$_POST['cadd']; $pri=$_POST['price']; $query ="UPDATE login SET company_name=$comname,company_add=$comadd,price=$pri WHERE id=$id"; $result = mysql_query($query); echo $result; if(!$result) { echo ''; echo 'alert("something went Wrong...:("); location.href="edit.php"'; echo ''; }else{ echo ''; echo 'alert("successfully updated!!!"); location.href="edit.php"'; echo ''; } } ?> 

Em vez de usar valores de substituição direta, você pode usar methods abaixo para evitar a injeção sql.

Você basicamente tem duas opções para conseguir isso:

  1. Usando PDO (para qualquer driver de database suportado):

      $ stmt = $ pdo-> prepare ('SELECT * FROM employees WHERE name =: name');
    
     $ stmt-> execute (array ('name' => $ name));
    
     foreach ($ stmt como $ row) {
         // faça algo com $ row
     } 
  2. Usando MySQLi (para MySQL):

      $ stmt = $ dbConnection-> prepare ('SELECT * FROM employees WHERE name =?');
     $ stmt-> bind_param ('s', $ name);
    
     $ stmt-> execute ();
    
     $ result = $ stmt-> get_result ();
     enquanto ($ row = $ result-> fetch_assoc ()) {
         // faça algo com $ row
     } 

Por favor, consulte Como posso evitar a injeção de SQL no PHP?

Você deve colocar os valores do caractere com aspas simples:

 $query ="UPDATE login SET company_name='$comname',company_add='$comadd',price=$pri WHERE id=$id"; 

Pare de usar o mysql_* API obsoleto. Use mysqli_* ou PDO com declarações preparadas. Pelo menos use a function de erro, para obter a mensagem de erro.