2013-02-15 20 views
0

我試圖設置一個查詢,根據我的表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>"; 
     } 
    ?> 

回答

0

ptb_stats.userage一個數字或時間戳? 如果它是一個數字比where ptb_stats.userage < 25將工作。

+0

它的一個varchar(11),其號碼 – 2013-02-15 18:57:22

1

我猜你正在尋找

SUBDATE(CURRENT_DATE(), INTERVAL 25 YEAR)