function saveTweets($screen_name) {
global $link;
$screen_name = dbEscape(strtolower(trim($screen_name)));
if (!$screen_name) { echo "<p><strong>Error: No screen name declared.</strong></p>\n"; return false; }
$row = dbGetRow("SELECT `id` FROM `twitter` WHERE `screen_name`='$screen_name' ORDER BY `id` DESC LIMIT 1");
$last_id = $row['id'];
$url = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=$screen_name&count=1500&include_rts=true" ;
if ($last_id) { $url .= "&since_id=$last_id" ; }
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
$xml = curl_exec ($ch);
curl_close ($ch);
$affected = 0;
$twelement = new SimpleXMLElement($xml);
foreach ($twelement->status as $status) {
$text = dbEscape(trim($status->text));
$time = strtotime($status->created_at);
$id = $status->id;
$retweet_count = $status->retweet_count;
dbQuery("INSERT INTO `twitter` (`id`,`screen_name`,`time`,`text`,`hidden`,`retweet_count`) VALUES ('$id','$screen_name','$time','$text','n','$retweet_count') ON DUPLICATE KEY UPDATE $row[retweet_count] = VALUES('$retweet_count')");
$affected = $affected + dbAffectedRows();
}
return "<p>".number_format($affected)." new tweets from $screen_name saved.</p>\n" ;
}
echo saveTweets('Phil');
?>
이 모든 트윗, 시간과 사람을 기록하기 위해 노력을 게시,하지만 retweet_count이 항목의 시간에 로그인 할 때 - 내가 로그인하면 트윗이 기록 될 때 그래서 0 될 가능성이 높습니다 - 내가 실행할 때 그런 기능
ON DUPLICATE KEY UPDATE $row[retweet_count] = VALUES('$retweet_count')");
를 얻을 수 없다 트윗이 다시 retweet되면 나중에 쿼리가 행을 업데이트합니다.
retweet_count에 대한 항목의 대부분은 동일하므로 (0 또는 1), 기본 키 - id는 고유해야하며 retweet_count를 UNIQUE로 설정할 수 없습니다. 또한 자동 증가 열 id - colid - 그것은 실제로 트위터 API에서 가져온 것이 아니기 때문에 고유 할 수 있으며 유일하게 설정됩니다.
int가 이미 포함 된 행을 업데이트하는 것이 더 좋은 기능이 있습니까? 감사합니다
나는 그것이 가능성이 내 구문 동의 이렇게 빨리 회신 주셔서 감사 것이지만, UNFO 다행히도 이러한 제안은 데이터베이스를 업데이트하지 않았습니다. VALUES() 함수는 여기에있는 다른 게시물에서 볼 수있는 예일 뿐이므로이를 사용하는 데는 별 도움이되지 않습니다. – Phil