我有一个数据库与2个表,我希望从这两个拉数据,并显示在一个html表中。当我执行下面的select语句时,我似乎得到了除了auto_increment列"id“之外的所有内容。
>mysql connection strings here.
$query = "SELECT Hotels.*,surfcup_Rates.*
FROM Hotels
LEFT JOIN surfcup_Rates
ON Hotels.id=surfcup_Rates.hotelID";然后我使用将查询加载到$result中。稍后,我将其加载到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语句有什么问题吗?还是我错过了什么。任何帮助都将不胜感激。谢谢你,戴夫
发布于 2012-03-11 06:50:14
surfcup_Rates表是否也有一个名为id的字段?如果是这样的话,mySQL将不知道使用哪个id,hotel还是surfcup_Rates。
在这种情况下,您有几个选择,
免责声明
我自己从来没有在PHP中使用过以下方法,我在SAP和Zimbra中看到过它,因为这不是一个关于这些方面的讨论论坛,而不是一场辩论,我想我会声明它可能不起作用,但正如上面提到的,在我下面的评论中,我已经看到它起作用了
hotels.id我希望这能帮到你
发布于 2012-03-11 06:44:37
试一试
$query = "SELECT *
FROM Hotels
LEFT JOIN surfcup_Rates
ON Hotels.id=surfcup_Rates.hotelID"; 注意:我可能会选择select中的所有字段
SELECT Hotels.id as HotelId, surfcup_Rates.id as SurfCupId,....
[others here] ... FROM Hotels
LEFT JOIN surfcup_Rates
ON Hotels.id=surfcup_Rates.hotelID发布于 2012-03-11 06:45:14
假设您的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";在这种情况下,来自Hotels的id将屏蔽来自surfcup_Rates的as,而不是您拥有的相反方向。
https://stackoverflow.com/questions/9650832
复制相似问题