【问题标题】:Need a More Specific PHP While Loop for Querying MySQL Database需要更具体的 PHP While 循环来查询 MySQL 数据库
【发布时间】:2013-02-20 09:13:01
【问题描述】:

我正在查询数据库并显示数据。我有一个时间戳和一个 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,然后运行循环,但这也不起作用。我认为这是一个非常简单的解决方案,但我不知道它是什么。任何帮助将不胜感激。非常感谢!

【问题讨论】:

    标签: php mysql loops while-loop


    【解决方案1】:

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

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

    但更高效的是在 SQL 查询中使用WHERE

    $sql = "SELECT * FROM fb_id WHERE MONTH(timestamp)='$lastone_month' ORDER BY timestamp DESC";
    

    【讨论】:

      【解决方案2】:
      // build here timestamp which is your limit and name it $limit
      $sql = 'SELECT * FROM fb_id WHERE timestamp < "$limit" ORDER BY timestamp DESC';
      

      类似的东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 2023-03-30
        • 2013-03-11
        • 2014-11-29
        • 1970-01-01
        • 2012-04-23
        • 2015-02-14
        相关资源
        最近更新 更多