仅更新数据库中的一个表

时间:2011-12-28 20:30:58

标签: php mysql

每当我执行更新查询时,我的整个表都会更新。当我只想要更新一个值时,我该怎么做?

这是我的数据库结构:

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 - 值而不触及数据库中的其他数据......

功能

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 个答案:

答案 0 :(得分:1)

基本上,每当遇到此问题时,您都在更新表而没有任何WHERE子句。像下面的代码:

UPDATE myTable SET myField = 'newValue';

在这种情况下,所有存储的记录都将使用新值进行更新。

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

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

答案 1 :(得分:1)

$project->updateProject()功能一定存在问题。

尝试使用简单查询:

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