我想创建一个跟踪表来监控每天的项目跟踪者数量。该表将每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":", explode(","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。 谢谢你的帮助!
答案 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":", explode(","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;
}
}
}
?>