2016-07-11 24 views
0

'company_name', 'company_add', 'price'をプライマリキー'id'として更新しようとしていますが、'something went wrong'というメッセージと'undefined id'というエラーが表示されます。私を助けてください!あなたは、単一引用符で文字の値を配置する必要があり更新文を使用してデータベース値を更新するにはどうすればよいですか?

<?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 '<script language="javascript">'; 
     echo 'alert("something went Wrong...:("); location.href="edit.php"'; 
     echo '</script>'; 
    }else{ 
     echo '<script language="javascript">'; 
     echo 'alert("successfully updated!!!"); location.href="edit.php"'; 
     echo '</script>'; 
    } 
} 
?> 
+0

スクリプトで$ idを見ることができます... –

+0

'language =" javascript "'? 'mysql_query'?実際には時代遅れのコード。 – Ultimater

+0

$ idはIDを受け付けていません....しかし、私はid = 1を与えています。 – Rkboss

答えて

2

直接代入値を使用する代わりに、以下の方法を使用してSQLインジェクションを回避できます。 (MySQL用)MySQLiのを使用して

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 

$stmt->execute(array('name' => $name)); 

foreach ($stmt as $row) { 
    // do something with $row 
}
  • :PDOを使用して

    1. (のためのサポートされている任意のデータベースドライバ):

      $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); 
      $stmt->bind_param('s', $name); 
      
      $stmt->execute(); 
      
      $result = $stmt->get_result(); 
      while ($row = $result->fetch_assoc()) { 
          // do something with $row 
      }
    2. あなたは基本的に2つのこれを達成するためのオプションを持っています

    お願いします。 r How can I prevent SQL injection in PHP?

  • 0

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

    停止非推奨mysql_* APIを使用して。準備された明細書にmysqli_*またはPDOを使用してください。 エラー機能を使用して、エラーメッセージを取得します。

    +0

    Thnxそれは動作します! – Rkboss

    関連する問題