在mysql,php中搜索年龄范围

时间:2011-04-10 10:31:48

标签: php mysql range

嘿伙计们,我需要创建一个函数,以便它在这个函数中搜索年龄范围

    function search($query) {

    $query = mysql_escape_string($query);   
    $connection = mysql_open();
    $statement = "select ID, UserName, Gender, USERDOB,DATEDIFF(USERDOB,now()) from Users ";
     if (!empty($query)) {
        $statement .= "where FirstName like '%$query%' " .
                    "or LastName like '%$query%' " .
                    "or UserName like '%$query%' " .
                    "or Gender like '%$query%' ";
                         }
        $statement .= "order by id ";

    $result = @ mysql_query($statement, $connection)
     or showerror();

  $users = array();
  while ($user = mysql_fetch_array($result)) {
      $user[4] = floor($user[4]/-1/364.25);
      $users[] = $user;
  }

  // Close connection and return resulting array
  mysql_close($connection)
      or showerror();
  return $users;
}

这是搜索功能。但它也使人们有可能看到一个人的年龄。年龄不存储在数据库中,但DOB存储在数据库中。所以它算了。我也在使用一个聪明的模板。 mysql_open()是我自己的函数。我想我需要找到一种方法让年龄进入查询并用范围做一些事情......

无论如何都很丢失,有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果您在数据库中有DOB并且想要找到与年龄范围相匹配的行,那么最简单和最有效的方法是首先将您的最小年龄和最大年龄转换为您的PHP中的DOB。然后你的查询将是:

SELECT * FROM USERS WHERE DOB > MIN_DOB AND DOB <= MAX_DOB;

假设DOB是时间戳或日期或长。

答案 1 :(得分:1)

您需要获取$ query的开始和结束年龄部分,然后将开始年龄和结束年龄转换为出生日期。

然后您可以添加

"OR dob BETWEEN '%$startdob%' AND '%$enddob%'"

应评估类似OR dob BETWEEN'1980-01-01'和'1990-01-01'