【问题标题】:CodeIgniter cannot echo datetime resultCodeIgniter 无法回显日期时间结果
【发布时间】:2017-02-14 13:08:28
【问题描述】:

我用 CodeIgniter 3.1.3 建立了一个网站,从昨天开始就遇到了这个问题我不知道我哪里做错了。它只是简单地使用简单的 jQuery @987654323 从数据库中获取数据@ 在视图中获取数据并将附加到div

数据库表中的所有数据都已成功显示,除了一个日期时间!

型号:

public function get_new_kokok($option) {
    if ($option['last_showed']) {
        $query = $this->db->query("SELECT * FROM kokok WHERE id_kokok>$option[last_showed] AND privacy=1 ORDER BY id_kokok ASC LIMIT 1");
    } else {
        $query = $this->db->query("SELECT * FROM kokok WHERE id_kokok=(SELECT MAX(id_kokok) FROM kokok WHERE privacy=1)");
    }
    return $query->result();
}

控制器:

$data = $this->model->get_new_kokok(array('last_showed'=>$this->input->post('last_showed')));

foreach($data as $kokok) {
    $id_kokok = $kokok->id_kokok;
    $id_user = $kokok->id_user;
    $kokok = $this->kokok_escape($kokok->kokok);
    $fullname = $this->model->get_userinfo('fullname',$id_user);
    $timee = $kokok->timee;
    //$time = date('h:i A',strtotime($timee));

    echo "<div class=\"clearfix\">";
    echo "<div class=\"kokokan\" data-id-kokok=\"$id_kokok\" style=\"display:none\"><p>$kokok</p><small><a href=\"".base_url()."yay/profile/$id_user\">$fullname</a> • $timee</small></div>";
    echo "</div>";
}

我明白了:

来自数据库的原始未格式化日期时间(“2017-02-09 13:46:57”)应该出现在右下角的名称“Elena Chereishline”之后,但事实并非如此。

第 25 行是:$timee = $kokok-&gt;timee; 当我评论那行时,没有发生错误。

遇到 PHP 错误

严重性:通知

消息:试图获取非对象的属性

var_dump:

array(1) {
    [0]=> object(stdClass)#22 (11) {
        ["id_kokok"]=> string(1) "3"
        ["id_user"]=> string(1) "2"
        ["kokok"]=> string(57) "Aku punya anak lho, maksudku anak ayam :v #gaadayangnanya"
        ["react_like"]=> NULL
        ["react_love"]=> NULL
        ["react_fun"]=> NULL
        ["react_meh"]=> NULL
        ["react_mad"]=> NULL
        ["react_sad"]=> NULL
        ["privacy"]=> string(1) "1"
        ["timee"]=> string(19) "2017-02-09 13:46:57"
    }
}

所以我的问题是,这是什么或为什么会发生这种情况?如何解决这个问题?我很困惑_(:"3

【问题讨论】:

  • pokopoko.php 中第 25 行的内容
  • 使用 $timee-&gt;format('Y-m-d H:i:s'); 并检查一次:- echo "&lt;div class=\"kokokan\" data-id-kokok=\"$id_kokok\" style=\"display:none\"&gt;&lt;p&gt;$kokok&lt;/p&gt;&lt;small&gt;&lt;a href=\"".base_url()."yay/profile/$id_user\"&gt;$fullname&lt;/a&gt;$timee&lt;/small&gt;&lt;/div&gt;";
  • @JethroHazelhurst 就在 foreach 中的这一行:$timee = $kokok->timee;
  • 这里一定有问题:$kokok = $this-&gt;kokok_escape($kokok-&gt;kokok); 删除该行并测试。
  • @JethroHazelhurst 不不,这是我自己的功能,绝对不是问题,因为 kokok(帖子文本)已成功出现在 div 中。问题确实是$timee = $kokok-&gt;timee; 行。当我发表评论时,没有发生错误。

标签: php mysql codeigniter datetime codeigniter-3


【解决方案1】:

在您的 foreach 循环内,您正在重新分配 $kokok,这应该是一个对象。

您正在重新分配$kokok = $kokok-&gt;kokok。这是您的对象的属性...所以现在当您尝试访问 $kokok 时,它不再是 kokok 对象,而是原始 kokok 对象的属性...$kokok-&gt;kokok

如果不知道您的功能$this-&gt;kokok_escape(); 是做什么的,则无法提供进一步的帮助。

你可以试试:

$kokok = $this->kokok_escape($kokok);

【讨论】:

    【解决方案2】:

    终于我知道了自己问题的答案。感谢@JethroHazelhurst,他非常细心并注意到这一行有问题:

    $kokok = $this-&gt;kokok_escape($kokok-&gt;kokok);

    是的,我使用变量名$kokok = ...$kokok 是foreach 循环使用的变量:

    foreach($data as $kokok) {

    所以$kokok 被替换为字符串的数组搞砸了。

    对不起,谢谢大家。 :')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2018-08-25
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多