2011-03-04 117 views
1

我的fetch_assoc返回重複的行。它似乎在自我繁殖。我有4個輸入在我的表中,它返回16.mysql_fetch_assoc返回重複的行...

這是我的代碼....請幫助我。我認爲我的循環錯誤。

<?php 
$tryshow =" SELECT c.customer_date, c.lastname, c.firstname, 
    s.room_number, s.date_in, s.date_out 
FROM customers c 
    INNER JOIN services s 
     ON c.customer_date = s.date_in 
WHERE c.customer_date = '$customer_date' "; 

$result = @mysql_query($tryshow,$conn) 
      or die(mysql_error());  

if (mysql_num_rows($result) == 0) { 
    echo "No rows found, nothing to print..."; 
} 
?> 
<form> 
<table width="700" border="0"> 
    <tr> 
     <td width="100">Customer Date:</td> 
     <td width="100">Last Name</td> 
     <td width="100">First Name</td> 
     <td width="100">Room Number</td> 
     <td width="100">Date In</td> 
     <td width="100">Date Out</td> 
    </tr> 
<?php while($row=mysql_fetch_assoc($result)){ ?> 
    <tr> 
     <td><?php echo $row['customer_date']; ?></td> 
     <td><?php echo $row['lastname']; ?></td> 
     <td><?php echo $row['firstname']; ?></td> 
     <td><?php echo $row['room_number']; ?></td> 
     <td><?php echo $row['date_in']; ?></td> 
     <td><?php echo $row['date_out']; ?></td> 
    </tr> 
<?php }?> 
</table> 

在此先感謝。

-renz

+8

這是最有可能您的數據。對於相同的客戶,您可能有相同的「約會日期」服務。只是猜測。代碼本身看起來很好。在數據庫上運行查詢本身,看看你得到了什麼 – Cfreak 2011-03-04 20:13:27

+0

@cfreak你的權利我運行它在phpmyadmin和它一樣。你認爲我應該怎麼做? – renz 2011-03-04 20:19:10

+1

修復您的數據完整性邏輯 – 2011-03-04 20:24:26

回答

0

你有兩個選擇,如果查詢運行在phpMyAdmin是相同的。首先,你可以清理你的數據。如果這是可能的話,它是最好的方向。更好的數據可以使更好的應用程如果你不能爲數據完整性做很多事情,那麼你需要對它進行解釋。最簡單的方法是一個獨特的添加到您的查詢....

SELECT distinct c.customer_date, c.lastname, c.firstname, 
    s.room_number, s.date_in, s.date_out 
FROM customers c 
    INNER JOIN services s 
     ON c.customer_date = s.date_in 
WHERE c.customer_date = '$customer_date' 
+0

感謝您的回覆。我嘗試了截然不同的輸出。 – renz 2011-03-04 20:30:57

+0

你可以發佈實際輸出嗎? – dmcnelis 2011-03-04 21:54:47

0

您的從句

ON c.customer_date = s.date_in 

應該是唯一鍵

ON c.room_number = s.room_number