2011-12-28 49 views
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 ...

功能

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

插入功能

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

OK - 我有一个建议。启用通用日志并查看查询。可能另一个查询在脚本的另一部分中运行。当您看到查询时,您可能会将其追溯回代码。 – 2011-12-28 21:01:37

回答

1

您的$project->updateProject()函数一定有问题。

尝试用简单的查询:

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

基本上,只要你这个问题,你没有任何更新的表WHERE子句。像下面的代码:

UPDATE myTable SET myField = 'newValue'; 

在这种情况下,所有存储的记录将更新为新值。

在查询中使用WHERE子句只更新一个或某些指定的记录。

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

我的'updateProject'函数中包含'WHERE'子句,不是吗? – Michiel 2011-12-28 20:38:18

+0

如果你有它,我认为你在运行你的查询时有一些错误。你可以检查是否有任何错误? – 2011-12-28 20:42:28