Php mysql函数显示25岁以下的用户?

Php mysql函数显示25岁以下的用户?,php,mysql,Php,Mysql,有人能帮我吗?我正在尝试让我的mysql查询显示我网站上所有18-25岁的用户,目前正在这样做,但它会重复相同的结果/相同的用户大约20次 我只想在查询中显示每个结果/每个用户一次。有人能告诉我哪里出了问题吗?谢谢 年龄是以varchar(11)的形式记录在数据库中的,我使用年龄与我的出生日期分开,这是一个时间戳,但我需要将年龄设置为与出生日期分开,所以我使用varchar列 因此,为了清楚起见,我正在尝试显示25岁以下的所有用户(不会重复结果,也不会对每个结果重复一个以上的用户) 功能: fu

有人能帮我吗?我正在尝试让我的mysql查询显示我网站上所有18-25岁的用户,目前正在这样做,但它会重复相同的结果/相同的用户大约20次

我只想在查询中显示每个结果/每个用户一次。有人能告诉我哪里出了问题吗?谢谢

年龄是以varchar(11)的形式记录在数据库中的,我使用年龄与我的出生日期分开,这是一个时间戳,但我需要将年龄设置为与出生日期分开,所以我使用varchar列

因此,为了清楚起见,我正在尝试显示25岁以下的所有用户(不会重复结果,也不会对每个结果重复一个以上的用户)

功能:

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.user_age='18' OR  ptb_stats.user_age='19' OR ptb_stats.user_age='21' OR  ptb_stats.user_age='22' OR ptb_stats.user_age='23' OR  ptb_stats.user_age='24' OR  ptb_stats.user_age='25'           

                        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:


ptb_stats.user_年龄在18到25岁之间

试试类似的方法

SELECT DISTINCT username FROM ...

您得到重复结果的另一个原因是您使用了表1、表2中的
,而您应该使用
JOIN
语句,因为第一个语句将执行表叉积。

您与
以及
发生冲突

试试这个

   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.user_age in (18,19,20,21,22,23,24,25)        
                    GROUP BY ptb_stats.user_id
                    ORDER BY ptb_stats.user_age DESC
                    LIMIT 0,40

为什么这个年龄的varchar是11,而不是int(3)?@John这是继表叉积之后我注意到的第二件事。这需要重写两件事:1)时间戳不会显示1970年之前出生的用户。2) 存储年龄和DoB是错误的数据库规范化。
   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.user_age in (18,19,20,21,22,23,24,25)        
                    GROUP BY ptb_stats.user_id
                    ORDER BY ptb_stats.user_age DESC
                    LIMIT 0,40