我一直在我的网站上建立一个轮询功能来抓取用户帖子。虽然它的工作我有一些事情要做。自上次插入的ID以来,仅抓住朋友帖子并插入朋友的所有消息。
我需要我的代码选择多于最后插入数据库的条目。我需要它来要求数据库选择从最后插入的id插入的每个id,我只在Feed atm中显示1,我知道这是因为我从另一个帐户发布了两个帖子,它只显示了最后的结果。
我该如何纠正这个问题?并且没有..我的网站尚未上线,我没有保护我的原始数据。 :)我将很快在整个网站上做的事情。
<?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()
答案 0 :(得分:0)
我的意思是这样的。
初始SQL语句将找到您需要的所有记录;然后你只需要将它们处理成你的json数组并在你完成时返回它。
(我没有测试过这段代码,我的mysqli不是最好的,但我希望你至少能看到我想要做的事情)
我还将所有SQL调用合并为一个。
$last = isset($_GET['old_msg_id']) ? $_GET['old_msg_id'] : 0;
$stmt = mysqli_prepare($mysqli,"SELECT * FROM streamdata s INNER JOIN users u ON s.streamitem_creator = u.id WHERE streamitem_id >= ? ");
$stmt->bind_param("s", $last);
$stmt->execute();
$json = array();
$count = 0;
while ($row = $stmt->fetch_array()) {
$json[$count]['streamitem_id'] = $row['streamitem_id'];
$json[$count]['streamitem_timestamp'] = Agotime($row['streamitem_timestamp']);
$json[$count]['streamitem_content'] = $row['streamitem_content'];
$json[$count]['streamitem_creator'] = $row['streamitem_creator'];
$json[$count]['username'] = $row['username'];
$json[$count]['id'] = $row['id'];
$json[$count]['first'] = $row['first'];
$json[$count]['middle'] = $row['middle'];
$json[$count]['last'] = $row['last'];
}
echo json_encode($json);