为了账号安全,请及时绑定邮箱和手机立即绑定

如何从MySQL数据库获取时间戳?

如何从MySQL数据库获取时间戳?

PHP
皈依舞 2021-05-14 18:16:54
如果我调用函数getDate_created();,我的查询将不会显示时间戳。我怎样才能解决这个问题?函数getAll()可以工作。<?phpclass Post{    public $date_created;    public function getDate_created()    {        return $this->date_created;    }    public function setDate_created($date_created)    {        $this->date_created = $date_created;        return $this;    }    public static function getAll()    {        $conn = Db::getInstance();        $result = $conn->query('SELECT * FROM images');        return $result->fetchAll(PDO::FETCH_CLASS, __CLASS__);     } }$posts = Post::getAll();$timepost = new Post();$t = $timepost->getDate_created();var_dump($t);表格图片:CREATE TABLE `images` (   `id` int(11) NOT NULL,   `user_id` int(11) NOT NULL,   `img_description` varchar(255) NOT NULL,   `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,   `file_path` varchar(255) NOT NULL   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Var_dump($ t)结果显示为NULL。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您正在创建一个Post何时执行的新实例$timepost = new Post();


如果您想从数据库中读取这些帖子之一,则应该从getAll()方法中读取那些(或更多)帖子。


前任:


$posts = Post::getAll();


foreach($posts as $post) {

    var_dump($post->getDate_created());

}


//or


var_dump($posts[0]->getDate_created());


查看完整回答
反对 回复 2021-05-28
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

在这种情况下,没有必要为属性设置时间戳记值,因为您将获取所有记录,因此它将获得最后一个记录的值(它将覆盖之前的每个记录)。仅当您要从数据库中获取一条记录时,才有必要将值设置为$ this-> date_created属性。通常,您只需要使……

$received_data = $result->fetch(PDO::FETCH_ASSOC);
$this->date_created = $received_data['date_created'];

此解决方案仅适用于assoc数组中的单个记录。如果您真的想为所有记录创建它,只需使用简单的foreach()循环遍历从查询中接收到的数据即可。

如果您需要数据库中的所有记录,则不希望(请相信我)将其设置为属性(除非您希望拥有对象数组,但是您需要重建大量当前代码并且效率不高) 。

在您的情况下,我建议仅使用返回的数组,而不将值设置为属性。

另外,在这种情况下,我不建议使用getter和setter,只需使用$ timepost-> created_date(当然,您需要在此属性之前设置值)即可达到相同的效果。


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信