使用PHP过滤数据库的年龄

时间:2012-07-10 09:26:01

标签: php sql database

我有一个数据库,其中包含一系列具有年龄组的人。在数据库中,年龄数据显示6个月6米,5年5年等等。我需要能够过滤我的数据,所以我只能看到5岁以下的年龄组。这就是我的PHP现在的样子。

$query = "SELECT DISTINCT code, minimumAge, description
          FROM recalls
          WHERE startBasis='age'
          ORDER BY code";
while ($row = mysql_fetch_array($result))
{
    if($row['minimumAge'] <= 5) {
        echo "<option value='" . $row['code'] . "'> "
          . $row['code'] . " " . $row['minimumAge'] . " " . $row['description'] 
          . "</option>";
    }

如果你有一个年龄为600万的人,因为这个数字高于5而不能出现,我怎么能把它包含在5岁以下但超过5米的人的信息中呢? / p>

2 个答案:

答案 0 :(得分:1)

如果您只想查询minimalAge的记录,如'5y'或'4y'或'4y 3m'或'9m'等等 您可以在选择查询(http://dev.mysql.com/doc/refman/5.0/en/regexp.html)中使用REGEXP运算符:

$query = "SELECT DISTINCT code,minimumAge,description FROM recalls WHERE startBasis='age' AND minimumAge REGEXP '^([0-5]y|[0-9]m)|([0-5]y [0-9]m)&' ORDER BY code";

答案 1 :(得分:0)

或许没有正则表达式只是从WHERE子句中的minimumAge获取第一个字符..?

懒得完全/彻底地检查它......但是想出了以下几点:

SELECT DISTINCT code, minimumAge, description
FROM recalls
WHERE startBasis='age'
AND ( 1 * SUBSTR( minimumAge , 1 , 1 ) ) < 6
ORDER BY code

所以,没有经过测试和填充。