仅在mysql中不存在时显示

时间:2014-10-11 17:51:29

标签: php mysql

我有一张滑雪者和滑雪站的桌子,他们被滑雪了。

例如:

---------------------
   skier     station
---------------------
|    1     |    2
|    1     |    3
|    2     |    2 
---------------------

如果我有三个电台,我想要显示一个文字,说滑雪者不在这个电台。

我有:

 $result="SELECT * FROM skiers_and_stations WHERE skier = '$id_skier';";
 $makeResult=mysql_query($result, $conexion);
 while ($row = mysql_fetch_array($makeResult, MYSQL_ASSOC)) {
 if ($row['station'] == '1') {   } else {echo "No here before, station 1"}; 
 if ($row['station'] == '2') {   } else {echo "No here before, station 2"}; 
 if ($row['station'] == '3') {   } else {echo "No here before, station 3"}; 
 }

但它没有用。

我想要显示:

Skier 1 
No here before, station 1

1 个答案:

答案 0 :(得分:0)

问题在于每次迭代时,两个if语句都将为false并转到else语句。如果您设置了一个包含所有可能性的阵列,并删除了他们所去过的站点,那么最后您将拥有他们未曾去过的站点列表。

另外,你真的不应该使用mysql_query函数,因为它们已被弃用,很快就会从PHP中删除。看看mysqli。此外,SQL注入您的查询。为了解决您的问题,我没有做出这些改变。

$result = "SELECT * FROM skiers_and_stations WHERE skier = '$id_skier';";
$makeResult = mysql_query($result, $conexion);
$stations = array(1 => true, 2 => true, 3 => true);
while ($row = mysql_fetch_array($makeResult, MYSQL_ASSOC)) {
    unset($stations[$row['station']]);
}
foreach ($stations as $stationId => $val) {
    echo "Not here before, station $stationId";
}