2013-04-23 74 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