2017-05-30 44 views
1

我想只更新數據庫中的一列,但由於某種原因,我的mysql查詢也更新了另一列。更新列表中未提及的時間戳列的查詢

我的代碼看起來有點像這樣:

$sql = "UPDATE rackusage set totalDuration =".$timeDiff." where (rackID = '".$rackID."' and startTime LIKE '%".$getStartTime."%');"; 
      echo "<br>"; 
      echo $sql; 
      echo "<br>"; 
      $res = mysql_query($sql); 

這是在PHP。 我只想更新總持續時間列,但出於某種原因,startTime列也會更新。 輸出字符串看起來是這樣的:

UPDATE rackusage set totalDuration =30 where (rackID = '2' and startTime 
LIKE '%2017-05-30 18:34:36%'); 

這是產生數據庫:

DB

+2

請用準備好的語句,並且不使用MySQL的' '功能。使用MYSQLi或PDO – Akintunde007

+0

爲什麼你有where子句的括號? – Akintunde007

+1

您的圖像不支持您的問題。但除startTime(不必要)上的通配符外,查詢看起來是正確的。 – aynber

回答

1

這很可能你的startTime列有這樣的定義。

startTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

更改UPDATE查詢到包括SET startTime = startTime,你會打敗默認的ON UPDATE一部分。像這樣的東西應該可以做到。

UPDATE rackusage set startTime = startTime, totalDuration =".$timeDiff." ... 
+0

您的權利!非常感謝!這是問題!該死的。謝謝一噸:) –

0

如果O.Jones是正確的,你不想更新列statTime您可以在數據庫上處理該語句中的值:

ALTER TABLE rackusage 
CHANGE `startTime` `startTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

很酷:)謝謝:) –