在Codeigniter中创建跟踪表。使用Foreach插入数据

时间:2018-04-06 08:58:56

标签: php mysql codeigniter loops cron

我想创建一个跟踪表来监控每天的项目跟踪者数量。该表将每24小时更新一次。

结果将如下所示:Instagram followers Growth Line Chart

我现在有两张桌子。一个用于项目,一个用于Twitter跟踪。

我想从Projects表(项目ID,Twitter URL)获取数据,将数据转换为变量($ ico_id,$ twitter_url),从Twitter解析关注者数量,然后将所有内容插入Twitter跟踪表。并且必须为每个项目执行插入。最后,我每天应该有大约270个结果。

我已设法使用foreach()插入有关单个项目的信息,但它只占用了第一行,然后停止了。

这是我的代码:

<?php
class Tracker_model extends CI_Model {
    #insert follower count 
    public function twitter_followers(){
        $query = $this->db->get('icos');
        if($query->num_rows() > 0) {
            foreach($query->result() as $row) {
                $ico_id = $row->id;
                $twitter_url = $row->twitter;

                $page = @file_get_contents($twitter_url);
                $followers = @explode("followers_count&quot;:", explode(",&quot;friends_count", $page)[0])[1];  

                $data = array (
                    'ico_id'      => $ico_id,
                    'twitter_url' => $twitter_url,
                    'year'        => date("Y"),
                    'month'       => date("m"),
                    'month_word'  => date("F"),
                    'day'         => date("d"),
                    'day_word'    => date("l"),
                    'week'        => date("W"),
                    'followers'   => $followers
                );

                $insert_followers = $this->db->insert('twitter_followers', $data);
                return $insert_followers;
            }
        } else {
            return false;
        }
    } 
}
?>

这就是结果: MySQL Table 代码(模型)应该每24小时执行一次,我将使用cron。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您的问题是因为return声明。它将终止你的循环,因此只会插入第一条记录。删除此return语句。然后执行你的代码:

<?php
class Tracker_model extends CI_Model {
    #insert follower count 
    public function twitter_followers(){
        $query = $this->db->get('icos');
        if($query->num_rows() > 0) {
            foreach($query->result() as $row) {
                $ico_id = $row->id;
                $twitter_url = $row->twitter;

                $page = @file_get_contents($twitter_url);
                $followers = @explode("followers_count&quot;:", explode(",&quot;friends_count", $page)[0])[1];  

                $data = array (
                    'ico_id'      => $ico_id,
                    'twitter_url' => $twitter_url,
                    'year'        => date("Y"),
                    'month'       => date("m"),
                    'month_word'  => date("F"),
                    'day'         => date("d"),
                    'day_word'    => date("l"),
                    'week'        => date("W"),
                    'followers'   => $followers
                );

                $insert_followers = $this->db->insert('twitter_followers', $data);               
            }
        } else {
            return false;
        }
    } 
}
?>