2011-12-28 10 views
1

更新クエリを実行するたびに、テーブル全体が更新されます。 1つの値を更新するだけの場合はどうすればよいですか?ここでデータベース内の1つのテーブルのみを更新する

は私のデータベース構造である:

ID ||  photo  || sequence 
1 || test.png ||  1 
2 || bla.png  ||  2 

私はこのスクリプトを実行するたびに、この中

if (isset($_POST['submitted'])) { 
    $project = new Project(); 

    $project->sequence = $_POST['sequence'][$key]; 
    $projectid   = $_POST['photoid']; 

    if($project->updateProject($_DB, $projectid)) { 
     $feedback = "OK"; 
    } else { 
     $feedback = "NOT OK"; 
    } 
} 

結果:

ID ||  photo  || sequence 
1 ||    ||  4 
2 ||    ||  2 

だから、私はに何をすべきかを持っていますデータベース内の残りのデータに触れることなく、データベース内のsequence値を更新するだけですASE ...

FUNCTION

public function updateProject($db, $id) { 
     $sql = "UPDATE tblProject SET 
      sequence = '".$db->escape($this->sequence)."' 
     WHERE id = '".$id."'"; 
     return $db->insert($sql); 
    } 

INSERT機能:あなたはこの問題を取得するたび

public function insert($sql) { 
    mysql_query($sql, $this->_connection); 
    return mysql_affected_rows($this->_connection); 
    } 
+2

OK - 私は提案を持っています。一般的なログを有効にし、クエリを参照してください。スクリプトの別の部分で別のクエリが実行されている可能性があります。クエリが表示されたら、おそらくそれをコードに戻すことができます。 –

答えて

1

$project->updateProject()機能に問題がある必要があります。

は、単純なクエリを試してみてください:

$qry = "UPDATE tblProject SET sequence = '".$project->sequence."' 
     WHERE ID =".(int)$projectid."; 
mysql_query($qry); 
1

基本的に、あなたがどんなWHERE句を使用せずに、あなたのテーブルを更新しています。下記のコードのように:

UPDATE myTable SET myField = 'newValue'; 

この場合、すべての保存されたレコードは新しい値で更新されます。

指定したレコードのうちの1つまたはいくつかを更新するには、クエリのWHERE句を使用します。

UPDATE myTable SET myField = 'newValue' WHERE tableId = 'yourId'; 
+0

私は 'updateProject'関数に' WHERE'節を含めますか? – Michiel

+0

これをお持ちの場合、クエリを実行している間にいくつかのエラーが発生していると思います。エラーがあるかどうか確認できますか? –