2015-05-22 13 views
2

嗨,我有以下代碼。具有2個內部聯接的PHP PDO。如何區分它們在php

try { 
    $conn = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';charset=utf8', DB_USER, DB_PASS); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $get_member_data = $conn->prepare("SELECT T.trip_id, T.trip_destination, T.trip_leaderid, T.trip_driverid, T.trip_datedeperting, T.trip_datereturning, T.trip_timedeperting, T.trip_timereturning, L.member_surname, D.member_surname FROM trip AS T INNER JOIN members AS L ON L.member_id = T.trip_leaderid INNER JOIN members AS D ON D.member_id = T.trip_driverid"); 
    $get_member_data->execute(); 
    while($row = $get_member_data->fetch(PDO::FETCH_ASSOC)) { ?> 
<tr> 
    <td><?php echo $row['trip_id']; ?></td> 
    <td><?php echo $row['trip_destination']; ?></td> 
    <td><?php echo $row['L.member_surname']; ?></td> 
    <td><?php echo $row['D.member_surname']; ?></td> 
    <td><?php echo $row['trip_datedeperting']; ?></td> 
    <td><?php echo $row['trip_datereturning']; ?></td> 
    <td><?php echo $row['trip_timedeperting']; ?></td> 
    <td><?php echo $row['trip_timereturning'];?></td> 
</tr> 

試圖抓住2個單獨的成員姓氏和顯示在同一個錶行上。與此代碼,我沒有得到顯示的姓氏。如果我擺脫了L.和D.它只顯示了第二個成員的名字兩次。

+0

您需要SQL別名:http://www.w3schools.com/sql/sql_alias.asp – Scoutman

回答

1

您可以設置2分不同的列在您的查詢像L.member_surname l_member_surname, D.member_surname d_member_surname,其中l_member_surnamed_member_surname是新的列名。後來又打電話那些列在你的PHP代碼:

<td><?php echo $row['l_member_surname']; ?></td> 
    <td><?php echo $row['d_member_surname']; ?></td> 

所以,你的代碼是:

try { 
    $conn = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';charset=utf8', DB_USER, DB_PASS); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $get_member_data = $conn->prepare("SELECT T.trip_id, T.trip_destination, T.trip_leaderid, T.trip_driverid, T.trip_datedeperting, T.trip_datereturning, T.trip_timedeperting, T.trip_timereturning, L.member_surname l_member_surname, D.member_surname d_member_surname FROM trip AS T INNER JOIN members AS L ON L.member_id = T.trip_leaderid INNER JOIN members AS D ON D.member_id = T.trip_driverid"); 
    $get_member_data->execute(); 
    while($row = $get_member_data->fetch(PDO::FETCH_ASSOC)) { ?> 
<tr> 
    <td><?php echo $row['trip_id']; ?></td> 
    <td><?php echo $row['trip_destination']; ?></td> 
    <td><?php echo $row['l_member_surname']; ?></td> 
    <td><?php echo $row['d_member_surname']; ?></td> 
    <td><?php echo $row['trip_datedeperting']; ?></td> 
    <td><?php echo $row['trip_datereturning']; ?></td> 
    <td><?php echo $row['trip_timedeperting']; ?></td> 
    <td><?php echo $row['trip_timereturning'];?></td> 
</tr> 
0

MySQL允許你選擇別名域:

SELECT ... , L.member_surname AS `somealias1`, D.member_surname AS `somealias2`...