2011-12-28 4 views
1

Всякий раз, когда я выполняю запрос на обновление, вся моя таблица обновляется. Что мне нужно делать, когда я просто хочу, чтобы значение ONE было обновлено?Обновить только одну таблицу в базе данных

Вот моя структура базы данных:

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

OK - У меня есть предложение. Включите общий журнал и просмотрите запросы. Вероятно, другой запрос выполняется в другой части скрипта. Когда вы увидите запрос, вы, вероятно, сможете отследить его обратно в код. –

ответ

1

Незначительная проблема с вашей функцией $project->updateProject().

Попробуйте простой запрос:

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

В основном, когда вы получаете эту проблему, вы обновляете таблицу без каких-либо ИНЕКЕ. Как и код ниже:

UPDATE myTable SET myField = 'newValue'; 

В этом случае все ваши сохраненные записи будут обновляться с новым значением.

Используйте предложение WHERE в вашем запросе, чтобы обновить только одну или некоторые указанные записи.

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

Я включаю предложение 'WHERE' в моей' updateProject'-функции, нет? – Michiel

+0

Если у вас есть это, я думаю, что у вас есть некоторые ошибки во время выполнения запроса. Можете ли вы проверить, есть ли какие-либо ошибки? –

Смежные вопросы