Php 在其他情况下从中返回所需信息
我的代码有问题;我试图在登录用户和其他注册用户(列time1、time2和time3)之间比较数据库中的信息。除了else条件外,其他条件似乎都很好,我只想检查所有3列中的结果是否都不相同。这是我的密码: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
$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注入。