私は自分のサイトにユーザーの投稿を取得するためのポーリング機能を構築してきました。そして、その動作中に、私はいくつかのことをする必要があります。友達の投稿のみを取得し、最後に挿入されたID以降の友達によるすべてのメッセージを挿入します。
データベースに最後に挿入されたエントリよりも多くを選択するためのコードが必要です。最後に挿入されたIDから挿入されたすべてのIDを選択するようにデータベースに要求する必要があります。フィードATMに表示されるのは1つだけです。別のアカウントから2つの投稿を投稿し、最後の結果のみを表示したので、これを知っています。
この問題を修正するにはどうすればよいですか?いいえ。私のサイトはまだ公開されておらず、生データを保護していません。:)私のサイト全体ですぐにやろうとしていること。
<?php
$last = isset($_GET['old_msg_id']) ? $_GET['old_msg_id'] : 0;
$result = mysqli_query($mysqli,"SELECT streamitem_id FROM streamdata");
while($row = mysqli_fetch_array($result))
{
$current = $row['streamitem_id'];
}
while( $current <= $last) {
usleep(1000);
clearstatcache();
$current = $row['streamitem_id'];
}
$json = array();
$check = "SELECT streamitem_id, streamitem_timestamp, streamitem_content, streamitem_creator FROM streamdata WHERE streamitem_id=".$current." AND streamitem_type_id=1 ORDER BY streamitem_id DESC LIMIT 5";
$check1 = mysqli_query($mysqli,$check);
$resultArr = mysqli_fetch_array($check1);
$json['streamitem_id'] = $resultArr['streamitem_id'];
$json['streamitem_timestamp'] = Agotime($resultArr['streamitem_timestamp']);
$json['streamitem_content'] = $resultArr['streamitem_content'];
$json['streamitem_creator'] = $resultArr['streamitem_creator'];
mysqli_free_result($check1);
$check = "
SELECT * FROM users u
INNER JOIN streamdata s ON
(s.streamitem_creator = u.id AND s.streamitem_id = {$current})";
$check1 = mysqli_query($mysqli,$check);
$resultArr = mysqli_fetch_array($check1);
$json['username'] = $resultArr['username'];
$json['id'] = $resultArr['id'];
$json['first'] = $resultArr['first'];
$json['middle'] = $resultArr['middle'];
$json['last'] = $resultArr['last'];
mysqli_free_result($check1);
echo json_encode($json);
?>
使用する必要がありますかmysqli_affected_rows()