我有3个名为Tweets
,Teams
和Tweet_contain
的表格。我尝试的是检查一组推文是否包含团队的推特用户名。如果他们这样做,则应将推文添加到Tweets
表中,并且应根据推文文本中的团队Twitter用户名的数量将记录数添加到Tweet_contain
表中。这就是问题所在。由于推文只应添加一次,并且团队和推文之间的关系可以在Tweet_contain
中多次添加,因此会产生问题。这是因为$last_id
将在$teamQuery
被循环后返回0这一事实?
function checkTweetsForTeams($text, $created, $twitterId, $favoriteCount) {
global $con;
$ids = getTeams();
foreach($ids as $id => $teams) {
foreach($teams as $team) {
if(stripos($text, $team) !== false) {
$teamRelation = $con->prepare("INSERT INTO tweets(`created`, `twitterId`, `favoriteCount`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE tweets.favoriteCount = ?");
$teamRelation->bind_param("ssii", $created, $twitterId, $favoriteCount, $favoriteCount);
$teamRelation->execute();
$last_id = $con->insert_id;
$teamRelation->close();
$tweetRelation = $con->prepare("INSERT IGNORE INTO tweet_contain (`tweetId`, `teamId`) VALUES (?, ?)");
$tweetRelation->bind_param("ii", $last_id, $id);
$tweetRelation->execute();
$tweetRelation->close();
}
}
}
}