2015-02-11 44 views
0

我有一个数据库表,用于存储城市的航班信息,包括Destination_ID,Destinatination_City,Airline,Leaving_From和Arriving。SQL打印出两行?

我运行以下查询:

$name = $_GET['name']; 

    $dbQuery = $db->prepare("SELECT * FROM DESTINATIONS 
       WHERE destination_City = '$name' "); 

       $dbQuery->execute(); 
       $airlines= array(); 
       while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)){ 
       $Airlines[] = $dbRow['Airline']; } 


foreach($Airlines as $Airline) 
{ 
$dbQuery = $db->prepare("SELECT * FROM DESTINATIONS 
WHERE Airline = '$Airline' AND Destination_City = '$name' "); 
$dbQuery->execute(); 

while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)){ 
$Arriving = $dbRow ['Arriving']; 
$Leaving_From = $dbRow ['Leaving_From'] ; } 

echo "$Leaving_From to $Arriving" ; 
} 

此返回两个结果与除了到达的列是不同的值相同。但是,在打印时,打印第二行两次而不是打印两行。

我不知道它为什么这样做。谁能帮忙?

+5

你需要在'while'中放置'echo'。正如当前写入的,变量被最后一次检索到的行覆盖 – kero 2015-02-11 12:42:42

+0

@kingkero刚刚尝试过这种方式,现在它打印第1行两次,第2行打印两次? – OUDK 2015-02-11 12:47:32

+0

你有任何其他的代码包含/调用张贴的行吗? – kero 2015-02-11 12:48:52

回答

0

这是@OUDK参考:

$Airlines = array('Flyr'); 
$Airlines = array_unique($Airlines); 
$name = 'London'; 



foreach($Airlines as $Airline) 
{ 

    $dbQuery = $db->prepare("SELECT * FROM DESTINATIONS 
WHERE Airline = '$Airline' AND Destination_City = '$name' "); 

$dbQuery->execute(); 

while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)){ 
    $Arriving = $dbRow ['Arriving']; 
    $Leaving_From = $dbRow ['Leaving_From']; 

    echo "$Leaving_From to $Arriving" . '<br>'; 
} 


} 

DB我​​只有3个例子:

+---------+------------------+--------------+----------+ 
| Airline | Destination_City | Leaving_From | Arriving | 
+---------+------------------+--------------+----------+ 
| Flyr | London   | Paris  | London | 
| Flyr | London   | Rome   | London | 
| Flyr | London   | Madrid  | London | 
+---------+------------------+--------------+----------+ 

我在伦敦的目的地和到达,是在这部分有点困惑。

输出:

Paris to London 
Rome to London 
Madrid to London 

编辑----------------

我想我看到与上次编辑的问题,您使用由您的代码得到航空公司的数组意味着,如果航空公司在结果一次也将是阵列中的更多,你可以添加array_unique上面一样,但更好的方法是如下:

$dbQuery = $db->prepare("SELECT DISTINCT Airline FROM DESTINATIONS 
       WHERE destination_City = '$name' "); 

       $dbQuery->execute(); 
       $airlines= array(); 
       while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)){ 
       $Airlines[] = $dbRow['Airline']; } 
0

dbQuery提取每次迭代都会得到一个结果集,因此您需要将回显代码放在while循环中,以便每次迭代都打印结果。相应地修改您的代码以获得所需结果