Php 在其他情况下从中返回所需信息

Php 在其他情况下从中返回所需信息,php,if-statement,while-loop,Php,If Statement,While Loop,我的代码有问题;我试图在登录用户和其他注册用户(列time1、time2和time3)之间比较数据库中的信息。除了else条件外,其他条件似乎都很好,我只想检查所有3列中的结果是否都不相同。这是我的密码: $result = mysql_query("SELECT * FROM `users` WHERE `id` != '$logged_id'"); if(!mysql_num_rows($result)) echo "None"; else { while($row = mysql

我的代码有问题;我试图在登录用户和其他注册用户(列time1、time2和time3)之间比较数据库中的信息。除了else条件外,其他条件似乎都很好,我只想检查所有3列中的结果是否都不相同。这是我的密码:

$result = mysql_query("SELECT * FROM `users` WHERE `id` != '$logged_id'");

if(!mysql_num_rows($result)) echo "None";
else {
    while($row = mysql_fetch_array($result)) {
        $username = $row['username'];
        $time1 = $row['time1'];
        $time2 = $row['time2'];
        $time3 = $row['time3'];

        $times_array = array($time1, $time2, $time3);
        foreach ($times_array as $time_key => $time_value) {
            if($logged_time1 == $time_value || $logged_time2 == $time_value || $logged_time3 == $time_value) {
                echo $username . " at time " . $time_value;
            }
            elseif($logged_time1 != $time_value && $logged_time2 != $time_value && $logged_time3 != $time_value) {
                echo "no results";
            }
        }
    }
}

我认为@CBroe是对的。只需在SQL查询中执行如下筛选:

$result = mysql_query("SELECT * FROM `users` 
WHERE `time1` = '$logged_time1'
AND `time2` = '$logged_time2'
AND `time3` = '$logged_time3'
");

我认为您对关系数据库的看法是错误的。最好的做法是有一个单独的表,用一个外键将时间存储到一个userID。有一个用户ID和一个时间。然后,您可以查询该数据库的最佳时间,或者将其缩小到特定用户并查询他们的最佳时间。然后可以使用以下代码:

SELECT * FROM times WHERE id='someUser' ORDER BY time DESC LIMIT 3;
或者,要获得最佳时间,只需使用:

SELECT * FROM times ORDER BY time DESC LIMIT 3;
在此基础上,您可以使用以下方法确定值是唯一的:

SELECT DISTINCT times ORDER BY time DESC LIMIT 3;
或者,如果必须将其保存在一个表中,则可以使用以下方法检查不同的值:

SELECT DISTINCT time_1,time_2, time_3
FROM table_name;

您应该已经在SQL查询中进行了这种过滤…只是指出了一个明显的问题:mysql*函数已被弃用,请参见,您应该使用PDO。您的代码可以接受SQL注入。