2013-04-23 166 views
1

請你們幫我在我的代碼的語法加入多個表在MySQL

<?php 
    $detail = mysql_query("SELECT O.geoLocation, O.vehicleId, O.date, OL.oCodeDescription, V.vMake, V.vModel, V.colour 
          FROM offense O, offenselist OL, vehicle V 
          WHERE OL.oCode = O.offenseListId AND O.offenderNatId = '$id' AND V.vehicleReg = O.vehicleId"); 

    while($db_field = mysql_fetch_assoc($detail)){ 
     $geo = $db_field['O.geoLocation']; 
     $vid = $db_field['O.vehicleId']; 
     $date = $db_field['O.date']; 
     $offense = $db_field['OL.oCodeDescription'];              
     $make = $db_field['V.vMake']; 
     $model = $db_field['V.vModel']; 
     $colour = $db_field['V.colour']; 
     echo" <tr><td>Date:</td><td>$date</td></tr> 
       <tr><td>Offense</td><td>$offense</td></tr> 
       <tr><td>Scene Location:</td><td>$geo</td></tr> 
       <tr><td>Vehicle Registration No.:</td><td>$vid</td></tr>               
       <tr><td>Vehicle Description:</td><td>$colour $make $model</td></tr> 
       <tr><td colspan='2'>&nbsp;</td></tr> 
       <tr><td colspan='2'>&nbsp;</td></tr>"; 

    } 
?> 

其返回等這個錯誤之一:

未定義指數:O.geoLocation在C:\ WAMP \ WWW \ eroad \ view.php上線142

+1

我想你只需要輸入'$ db_field [ '地理位置'];'而不是'$ db_field [ 'O.geoLocation'];' – ckpepper02 2013-04-23 20:23:15

+0

var_dump($ db_field)爲了查看數組中的行 – 2013-04-23 20:24:15

+0

除非你有很好的理由,否則不要在新的應用程序中使用mysql_query。此接口已被棄用,非常危險,並且在將來的PHP版本中將被完全刪除。 [學習PDO](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)只需要半小時,並會讓你的應用程序如果使用正確的話,將來會更安全並且更安全。 – tadman 2013-04-23 20:34:47

回答

0

我想你只需要輸入$db_field['geoLocation'];代替$db_field['O.geoLocation'];

0

你需要加入上的ID是共同的兩個表之間,所以是這樣的:

$detail = mysql_query(
    "SELECT O.geoLocation, O.vehicleId, O.date, OL.oCodeDescription, V.vMake, V.vModel, V.colour 
    FROM offense O 
    INNER JOIN offenselist OL 
     ON O.offenseListId = OL.oCode 
    INNER JOIN vehicle V 
     ON O.vehicleId = V.vehicleReg 
    WHERE O.offenderNatId = '$id'" 
); 

應該這樣做。

+0

'$ id'上的一些轉義會使這個無限安全。 – tadman 2013-04-23 20:33:57