我有一张滑雪者和滑雪站的桌子,他们被滑雪了。
例如:
--------------------- 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
答案 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";
}