运行代码时如何将准备好的stmt的时间戳添加到mysql数据库? [复制]

Posted

技术标签:

【中文标题】运行代码时如何将准备好的stmt的时间戳添加到mysql数据库? [复制]【英文标题】:How to add a timestamp of a prepared stmt to mysql database when code is run? [duplicate] 【发布时间】:2020-06-03 00:20:02 【问题描述】:
$stmt = $conn->prepare("INSERT INTO users (username,created) VALUES (?,?)");
$stmt->bind_param("ss", $_POST['username-reg','whatdoiputhere?']);
$stmt->execute();

我想添加一个“现在”日期/时间戳,它也可以同时插入,以便我可以跟踪用户何时创建帐户。是否有我需要编写/参考的函数来获取当前日期?还是有一个我只需要参考的已知函数?我是php新手,对不起

【问题讨论】:

【参考方案1】:

您可以利用 mysql 的 timestamp initialization feature。

这通过使用default current_timestamp 选项将timestamp 列添加到表中来工作:

create table users (
    user_id int primary key auto_increment,
    username varchar(50),
    ts_created timestamp default current_timestamp
);

有了这个设置,您就不必再担心该列了。插入时忽略它,数据库会根据需要自动设置:

$stmt = $conn->prepare("INSERT INTO users (username) VALUES (?)");
$stmt->bind_param("ss", $_POST['username-reg']);
$stmt->execute();

注意:如果您还希望在记录被修改时更新时间戳,可以在列的定义中添加on update current_timestamp

【讨论】:

【参考方案2】:

您可以使用NOW()

$stmt = $conn->prepare("INSERT INTO users (username,created) VALUES (?, NOW())");
$stmt->bind_param("s", $_POST['username-reg']);
$stmt->execute();

【讨论】:

以上是关于运行代码时如何将准备好的stmt的时间戳添加到mysql数据库? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

运行准备好的语句 (MySQL/PHP)

准备好的语句何时失败?

如何对 PDO 中的不同表使用相同的准备好的语句?

如何在PHP中回显已准备好的sql语句的结果

PHP $stmt->num_rows 不适用于准备好的语句[重复]

如何将 ascii 流绑定到准备好的语句