我有一个包含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语句有问题吗?或者我错过了什么。任何帮助将不胜感激。 谢谢, 戴夫。
答案 0 :(得分: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 :(得分:1)
假设您的surfcup_Rates
表格中有id
列(您没有明确说明,但似乎很可能),那么您需要“重命名”其中一个id
来自两个表的列,这样当mysql_fetch_array
找出每行返回的内容时它们不会发生冲突,或者我相信你可以只交换SELECT
输出选择器的两个部分,因为你似乎并不关心id
表中的surfcup_Rates
:
$query = "SELECT surfcup_Rates.*,Hotels.*
FROM Hotels
LEFT JOIN surfcup_Rates
ON Hotels.id=surfcup_Rates.hotelID";
在这种情况下,来自id
的{{1}}会屏蔽Hotels
中的surfcup_Rates
,而不是相反。{/ p>
答案 2 :(得分:0)
surfcup_Rates
表是否还有一个名为id
的字段?如果是这样,mySQL将不知道要使用id
,hotel
或surfcup_Rates
。
在这种情况下,您有几个选项,
<强>声明强>
我自己从未在PHP中使用过以下方法,我在SAP和Zimbra中看过它,因为这不是关于这些方面的讨论论坛,而不是辩论,我认为我会放弃一个免责声明它可能不会工作但如上所述和我在下面的评论中看到它的工作
hotels.id
我希望这会有所帮助