0

我正在查询数据库并显示数据。我有一个时间戳和一个 Facebook ID,用于显示用户的个人资料图片(使用 Facebook 图表)。不过,这更像是一个 PHP/Loop 问题,而不是 FB Graph 问题。这是我正在处理的代码:

$sql = "SELECT * FROM fb_id ORDER BY timestamp DESC";
$result = $mysqli->query($sql);

echo "<h1>".$lastone_month." ".$year_lastone."</h1>";
while($row = mysqli_fetch_array($result)){
$fb_id = $row['fb_id'];
$timestamp = date_parse($row['timestamp']);
$month = $timestamp['month'];
$year = $timestamp['year'];                                     
echo "<a href='http://www.facebook.com/".$fb_id."' target='_blank'><img src='http://graph.facebook.com/".$fb_id."/picture/' /></a>";
}

基本上发生的事情是我在呼应最近一个月(这是在此之前的一些代码中)。$lastone_month 是一个数字(它是最近注册用户的月份数)。假设现在是 1 月,因此 h1 将显示 1/2013。然后,我让 while 循环遍历数据库并按时间戳顺序回显用户的个人资料图片。我想做的是运行 while 循环,直到它到达 $month 不等于 $lastone_month 的行。

我不能在 while 循环中使用 "&& $month==$lastone_month 因为此时尚未声明 $month 值。我在 echo 行周围尝试了一个 if 语句,但这导致它无限显示一个条目。我试图在while循环之前声明行,然后也在那里声明$month和$year,然后运行循环,但这也不起作用。我认为这是一个非常简单的解决方案,但我不知道它是什么任何帮助将不胜感激。非常感谢!

4

2 回答 2

1

您可以随时使用break退出循环:

while ($row = mysqli_fetch_array ($result))
{
  ...
  $month = $timestamp ['month'];
  if ($month != $lastone_month) break;
  ...
}

但更有效的是WHERE在您的 SQL 查询中使用:

$sql = "SELECT * FROM fb_id WHERE MONTH(timestamp)='$lastone_month' ORDER BY timestamp DESC";
于 2013-02-20T09:16:33.617 回答
0
// build here timestamp which is your limit and name it $limit
$sql = 'SELECT * FROM fb_id WHERE timestamp < "$limit" ORDER BY timestamp DESC';

类似的东西

于 2013-02-20T09:16:55.070 回答