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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Timestamp - Fatal编程技术网

更新时的时间戳不';我不能使用PHP

更新时的时间戳不';我不能使用PHP,php,mysql,timestamp,Php,Mysql,Timestamp,我有一个包含以下信息的feeddate列 类型:时间戳 属性:在更新当前\u时间戳时 默认值:当前时间戳 当我使用PHP插入带有此代码的行时 (feeddate位于最后一列,该列为NULL) 此feeddate不更新,类似于0000-00-00:00:00 但是当我使用PHP来更新表中已有的东西时,它会起作用 我的feeddate结构有没有做错什么,或者插入的代码不正确?您的查询应该是: $badgefeed = "INSERT INTO d VALUES ('','".$userID."'

我有一个包含以下信息的feeddate列

类型:时间戳
属性:在更新当前\u时间戳时
默认值:当前时间戳

当我使用PHP插入带有此代码的行时

(feeddate位于最后一列,该列为NULL)

此feeddate不更新,类似于0000-00-00:00:00
但是当我使用PHP来更新表中已有的东西时,它会起作用

我的feeddate结构有没有做错什么,或者插入的代码不正确?

您的查询应该是:

$badgefeed = "INSERT INTO d VALUES ('','".$userID."','Badge','','".$badgeNAME."','".$badgeTYPE."','".$badgelv."','')";
不要对最后一列使用任何值,因为在MySQL中使用时间戳作为默认值。只需从查询中省略最后一个(空白)值。这样,相关列的值将被视为null,因此将使用默认的时间放大器。

插入
'
使用
null

通过这种方式,
mysql
管理值本身

如果指定任何值,服务器将接受您的值,而不考虑其他触发器、设置


如果在insert语句中不包含该列或将其留空(null),则服务器将根据默认设置该列。在这种情况下,默认值为更新当前时间戳时的

插入
'
使用
null
。这样可以正确更新该列。@Alexartan No,null不会导致在insert中设置该列的默认值。一定是这样omitted@AlexTartan嘿,非常感谢你。这是工作@Nongkartnitchickart补充了一个答案和一点解释。很高兴它有帮助!只有一个问题:如果timestamp字段可为null,则此解决方案将值设置为null,而不是插入时的实际时间戳。最安全的方法是从insert语句中完全省略该字段。@Shadow,是的!但在本例中,
default:CURRENT_TIMESTAMP
,它的安全默认值和可为空是两种不同的动物!引用mysql文档中有关TIMESTAMP和DATETIME的自动初始化和更新的内容:“此外,您可以通过为任何TIMESTAMP列分配一个空值来初始化或更新当前日期和时间,除非它已使用NULL属性定义为允许空值。”您需要指定要在insert语句中使用的列列表。如果省略列列表,则需要为每个列指定一个值。
$badgefeed = "INSERT INTO d VALUES ('','".$userID."','Badge','','".$badgeNAME."','".$badgeTYPE."','".$badgelv."','')";