2012-03-10 123 views
1

我有一个数据库与2表我希望从两个拉数据,并显示在一个HTML表。当我执行下面的select语句我似乎得到一切,但AUTO_INCREMENT列“ID”MySQL选择*返回所有,但ID列

>mysql connection strings here. 

$query = "SELECT Hotels.*,surfcup_Rates.* 
      FROM Hotels 
       LEFT JOIN surfcup_Rates 
       ON Hotels.id=surfcup_Rates.hotelID"; 

然后我用加载查询到$结果。 后来我将它加载到mysql_fetch_array并将其循环到一个html表格中。

while ($row = mysql_fetch_array($result)) { 
    echo "</td><td>"; 
    echo '<a href="DeleteHotelRecord.php?id="['.$row['id'].']">Delete</a>'; 
    echo "</td><td>"; 
    echo $row['id']; 
    echo "</td><td>"; 
    echo $row['preferred']; 
>and so on........... 

一切工作:联接,SELECT语句和数据加载到表 完美。除第一张表中的id列外。我希望使用id来允许用户删除记录。用户将从受密码保护的“后端”向表中添加数据以进行数据输入。

我的select语句有什么问题吗?或者我错过了什么。任何帮助将不胜感激。 谢谢, Dave。

回答

0

surfcup_Rates表中是否也有一个名为id的字段?如果是这样,mySQL将不知道要使用什么idhotelsurfcup_Rates

在这种情况下,你有几个选项,

  1. 改变表结构,但在自己的风险,因为其他的事情这样做可能会破坏
  2. 使用别名(最好的方法)

免责声明

我从来没有使用PHP中我下面的方法,我在SAP和Zimbra看到它,因为这不是在这些方面的讨论论坛,而不是我以为我会放一个声明,下面我已经看到了可以不工作,但上面并在我的评论提到辩论它的工作

  1. 通话hotels.id

我希望这有助于

+0

#3不是正确的......只解决了mysql端模糊列的问题。如果PHP通过关联(列名称)键而不是位置键(索引整数)读取结果集,那么PHP中的结果仍然只有一个ID列。 1和2是可行的,2是最“适当”的国际海事组织,并且费用最少。 – prodigitalson 2012-03-10 22:54:27

+0

@prodigitalson,感谢您的评论,我同意#2是最好的,但是,如果数字3不正确,那么请你解释一下这是如何在'WHILE'声明中起作用的,它直接来自于生产“企业套件“这在企业界非常流行,它运行时没有错误或任何问题并且输出完美:'$ model_name = $ model_data ['models.modelName']' - 我不是该软件的开发人员,我只是进行增强在包装上,我也看到了它在一些其他的“企业应用程序”,所以将不胜感激知道它如何工作......干杯 – Ryan 2012-03-10 23:03:53

+0

@prodigitalson,如果你知道它是如何工作的基础上你的评论我会很感激答案但如果没有,我放弃了免责声明以及我看到它与我的答案一起工作的申请。欢呼 – Ryan 2012-03-10 23:11:34

1

尝试

$query = "SELECT * 
FROM Hotels 
LEFT JOIN surfcup_Rates 
ON Hotels.id=surfcup_Rates.hotelID"; 

注:我可能会做的所有字段在选择

SELECT Hotels.id as HotelId, surfcup_Rates.id as SurfCupId,.... 
[others here] ... FROM Hotels 
    LEFT JOIN surfcup_Rates 
    ON Hotels.id=surfcup_Rates.hotelID 
1

假设你surfcup_Rates表有一个id列(你不说明确,但这似乎很可能),那么你需要从两个表中“重命名”id列中的一列,以便当mysql_fetch_array找出每行返回的内容时它们不会发生冲突,或者我相信你可以交换两部分在SELECT输出选择,因为你似乎没有从surfcup_Rates表关心id

$query = "SELECT surfcup_Rates.*,Hotels.* 
FROM Hotels 
LEFT JOIN surfcup_Rates 
ON Hotels.id=surfcup_Rates.hotelID"; 

在这种情况下,从Hotelsid会掩盖一个从surfcup_Rates,而不是周围的其他方式你拥有了它。

+0

谢谢大家对你的帮助。由于这是开始阶段我很容易在surfcup_Rates表中更改'id'列名称。在两个表格中命名两个相同的列是一个愚蠢的错误,我应该更清楚。再次感谢冒着受欢迎的风险,我现在显示Hotels表中的'id'列数据。但删除链接字符串没有选择'id'。 – user316717 2012-03-11 00:51:15

相关问题