2017-05-30 1 views
1

Je souhaite mettre à jour une seule colonne dans ma base de données, mais pour une raison quelconque, ma requête mysql met également à jour une autre colonne.requête mettant à jour une colonne d'horodatage non mentionnée dans la liste des mises à jour

mon code ressemble un peu à ceci:

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

Il est en php. Je souhaite uniquement mettre à jour la colonne Durée totale, mais pour une raison quelconque, la colonne startTime est également mise à jour. La chaîne de sortie ressemble à ceci:

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

Ceci est la base de données résultante:

DB

+2

s'il vous plaît utiliser les commandes préparées et ne pas utiliser 'mysql 'fonctions. utilisez soit MYSQLi ou PDO – Akintunde007

+0

Pourquoi avez-vous un crochet pour la clause where? – Akintunde007

+1

Votre image ne supporte pas votre problème. Mais à part les caractères génériques sur startTime (inutile), la requête semble correcte. – aynber

Répondre

1

Il semble probable que votre colonne startTime est définie par quelque chose comme ça.

startTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

Changer votre UPDATE requête pour inclure SET startTime = startTime et vous serez vaincre la partie ON UPDATE de la valeur par défaut. Quelque chose comme ça devrait faire l'affaire.

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

Votre droit! Merci beaucoup! C'était le problème! Zut. Merci beaucoup :) –

0

Si O.Jones est juste et que vous ne souhaitez pas mettre à jour la valeur de la colonne STATTIME vous pouvez traiter cette déclaration sur la base de données:

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

Cool :) Merci :) –