gpt4 book ai didi

php - 如果转发,则更新包含 retweet_count 的 MySQL 行

转载 作者:行者123 更新时间:2023-11-29 14:28:24 25 4
gpt4 key购买 nike

我一直使用 Twitter API 和 PHP 使用以下函数将推文记录到 MySQL 数据库中:

 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_count 的大多数条目都是相同的(0 或 1),因此我无法将 retweet_count 设置为 UNIQUE,尽管主键 - id - 应该是唯一的,而且我还有一个自动递增列 id - colid - 不过它实际上并不是从 twitter api 中提取的,因此它可以是唯一的,并且被设置为唯一。

是否有更好的函数来更新已包含 int 的行?谢谢

最佳答案

您的语法不正确。它应该只是:

ON DUPLICATE KEY UPDATE column_name = new_value, ...

即:

ON DUPLICATE KEY UPDATE `retweet_count` = '$retweet_count'

或者,如果您确实想要使用 VALUES()函数(在您的情况下并不是特别有用 - 它实际上仅在使用单个 INSERT 语句插入多行时有用):

ON DUPLICATE KEY UPDATE `retweet_count` = VALUES(`retweet_count`)

关于php - 如果转发,则更新包含 retweet_count 的 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com