2012-03-10 184 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

相關問題