Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询更新更新列表中未提及的时间戳列_Php_Mysql_Sql_Datetime_Default - Fatal编程技术网

Php 查询更新更新列表中未提及的时间戳列

Php 查询更新更新列表中未提及的时间戳列,php,mysql,sql,datetime,default,Php,Mysql,Sql,Datetime,Default,我只想更新数据库中的一列,但出于某种原因,我的mysql查询也会更新另一列 我的代码看起来有点像这样: $sql = "UPDATE rackusage set totalDuration =".$timeDiff." where (rackID = '".$rackID."' and startTime LIKE '%".$getStartTime."%');"; echo "<br>"; echo $sql;

我只想更新数据库中的一列,但出于某种原因,我的mysql查询也会更新另一列

我的代码看起来有点像这样:

$sql = "UPDATE rackusage set totalDuration =".$timeDiff." where (rackID = '".$rackID."' and startTime LIKE '%".$getStartTime."%');";
            echo "<br>";
            echo $sql;
            echo "<br>";
            $res = mysql_query($sql);
UPDATE rackusage set totalDuration =30 where (rackID = '2' and startTime 
LIKE '%2017-05-30 18:34:36%');
这是结果数据库:

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

您的
startTime
列很可能是这样定义的

startTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UPDATE
查询更改为包含
SET startTime=startTime
,您将在更新时击败默认的
。像这样的东西应该能奏效

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

如果O.Jones是正确的,并且您不想更新列statTime的值,则可以在数据库中处理此语句:

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

请使用准备好的语句,不要使用
mysql
函数。使用MYSQLi或pdo为什么where子句有括号?您的图像不支持您的问题。但是除了startTime上的通配符(不必要),查询看起来是正确的。您可能已经设置了默认值
startTime
,它会在每次执行时更新该列。我猜您的意思是多行而不是多列。图片中的所有行都与您的
WHERE
子句匹配:它们都具有
rackID=2
,并且它们都具有相同的时间。您的右侧!谢谢!这就是问题所在!该死非常感谢:)酷:)谢谢:)