使用PHP和MySQL按年龄组排序用户?

问题描述:

我试图设置一个查询,根据我的表ptb_stats.user_age中的年龄显示我的网站上25岁以下的所有用户。我设定了-25年的时间间隔,但它不能按我期望的方式工作。我究竟做错了什么?使用PHP和MySQL按年龄组排序用户?

我的功能:

function categories_agegroup_under25() { 
      global $connection; 
      $query = "SELECT * 
         FROM ptb_users, ptb_stats 
         WHERE ptb_users.account_type = \"User\" AND ptb_users.account_status = \"Active\" AND ptb_stats.user_id = ptb_users.id 
         AND ptb_stats.userage >= ADDDATE(CURRENT_DATE(), INTERVAL -25 YEAR)    

         ORDER BY ptb_stats.user_age DESC 
         LIMIT 0,40"; 
      $categories_under25_set = mysql_query($query, $connection); 
      confirm_query($categories_under25_set); 
      return $categories_under25_set; 
     } 

我的PHP:

<?php 
$dob = $age['user_age']; 

function age_from_dob($dob) { 


     $date = date_diff(date_create($dob), date_create('now'))->y; 
     return $date; 
} 

?> 
    <?php 
     $categories_under25_set = categories_agegroup_under25(); 
     while ($age = mysql_fetch_array($categories_under25_set)) { 
      $date = age_from_dob($age['user_age']); 

      echo" 
      <div class=\"boxgrid caption\"> 
      <a href=\"profile.php?id={$age['id']}\"><img width=140px height= 180px src=\"data/photos/{$age['id']}/_default.jpg\"/></a> 
      <div class=\"cover boxcaption\"> 
      <h58> {$age['display_name']}, ".$date."</h58> 
      </div> 
      </div>"; 
     } 
    ?> 

ptb_stats.userage一个数字或时间戳? 如果它是一个数字比where ptb_stats.userage < 25将工作。

+0

它的一个varchar(11),其号码 – 2013-02-15 18:57:22

我猜你正在寻找

SUBDATE(CURRENT_DATE(), INTERVAL 25 YEAR)