如何打印在“php”中自联接两个表后在表中获得的值?

如何打印在“php”中自联接两个表后在表中获得的值?,php,mysql,sql,Php,Mysql,Sql,如何从给定代码打印.station\u id $query="SELECT A.train_no, A.station_id, A.arrival, A.dept, B.station_id, B.arrival, B.dept FROM TIME A,TIME B WHERE A.train_no = B.train_no AND A.station_id ='KNR' AND B.station_id='CLT' "; $rs=mysql_query($query); while($

如何从给定代码打印.station\u id

$query="SELECT A.train_no, A.station_id, A.arrival, A.dept, B.station_id, B.arrival, B.dept FROM TIME A,TIME B WHERE A.train_no = B.train_no AND A.station_id ='KNR' AND B.station_id='CLT' ";


$rs=mysql_query($query); 

while($row = mysql_fetch_array($rs)) {

echo "</td><td>".$row['A.station_id']."</td> <td>"       .$row['A.arrival'] ."</td> <td>".$row['A.dept'] . "</td><td>".$row['B.station_id'] . "</td> <td>".$row['B.arrival'] ."</td><td>" .$row['B.dept']. "</td><td>";

}

大多数数据库API在关联数组键中不包含表名。所以您应该只使用$row['arrival']

如果查询从不同的表返回两个到达列,则应为其中一个或两个提供不同的别名,例如

选择a.到达作为a_到达,b.到达作为b_到达。。。
然后,您可以将它们称为$row['a_arrival']和$row['b_arrival']。

从数据库检索数据时,您应该查看返回的数组的结构。这有助于解决其中的单个元素。您的代码看起来像是盲目地尝试,没有检查,也没有参考任何示例

最有可能的情况是,您正在寻找类似于此的内容。请注意,由于下面提到的问题,此代码无法如图所示工作。这只是为了给你指出正确的方向

$query="SELECT A.train_no, A.station_id, A.arrival, A.dept, 
               B.station_id, B.arrival, B.dept 
        FROM TIME A,TIME B 
        WHERE A.train_no = B.train_no 
          AND A.station_id = 'KNR' 
          AND B.station_id = 'CLT' ";

$rs=mysql_query($query); 
while($row = mysql_fetch_array($rs)) {
    echo "<tr>\n";
    echo sprintf("<td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td>\n",
                 $row['train_no'], $row['station_id'], $row['arrival'], $row['dept']);
    echo sprintf("<td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td>\n", 
                 $row['station_id'], $row['arrival'], $row['dept']);
    echo "</tr>\n";
}
正如Athul Raj在他的回答中正确指出的那样,您的查询本身存在问题。您应该首先使用手动交互式数据库客户端运行查询。这有助于理清潜在的语法或逻辑问题。您可以确定,当在代码中使用查询时,它实际上会返回一个结果。也就是说:在代码中根本不进行任何错误检查。这就是为什么您可能没有看到您的查询抛出错误

除此之外:PHP中旧的mysql扩展早就被弃用了。文件明确指出。使用较新的mysqli扩展或pdo,这两个扩展都提供预处理语句