我在兩個頁面上使用相同的while循環,其中唯一的區別是每個頁面上的不同SQL調用。第一個作品,因爲它應該從查詢中抓取的內容,並在圖像滑塊顯示它:PHP無限循環問題
<?php
$qry = mysql_query(sprintf("SELECT * FROM manageme WHERE element IN ('%s')", $element));
$i = 0;
while (($t = mysql_fetch_array($qry)) != null && $i < 52) { $i++;?>
<li>
<a href="">
<img src="<?php print $t['fileLocation']; ?>";
title="<?php print $t['element_name']; ?>";
name="<?php print $t['clickLocation']; ?>";
alt="wat"
class="btnshow" />
</a>
</li>
<?php } ?>
這工作,因爲它應該通過循環步進而只要從查詢抓取的內容,因爲有少超過52個條目返回,每個記錄顯示一次時結束。
在使用不同的SQL調用實現相同的while循環時,會發生問題。
<?php
$qry = mysql_query(sprintf("SELECT u.username, us.user_id, us.service_id,
s.imageID, s.title, s.clickLocation, s.fileLocation, s.element_name
FROM user u, user_service us, manageme s
WHERE us.user_id = %s
AND s.imageID = us.service_id", $_COOKIE['user_id']));
$i = 0;
while (($t = mysql_fetch_array($qry)) != null && $i < 52) { $i++;?>
<li>
<a href="">
<img src="<?php print $t['fileLocation']; ?>";
title="<?php print $t['element_name']; ?>";
name="<?php print $t['clickLocation']; ?>";
alt="wat"
class="btnshow" />
</a>
</li>
<?php } ?>
而是從陣列抓取和當內容已經顯示一次結束while循環的,它繼續循環在圖像滑塊的內容,直到52級的條目已經被顯示。因此,例如,如果SQL調用僅查找4條記錄以顯示在圖像滑塊中,則在結束循環之前,該組4顯示13次(52/4)。
任何人都可以幫助我弄清楚如何結束這個循環後,它已經顯示我的數據庫中的每個記錄一次,只有一次?提前致謝!
爲什麼不限制MySQL查詢的結果?這將解決無限循環問題,並且不需要$ i限制循環變量 – Blacksonic
@Blacksonic。 OP在這裏做什麼是不必要的。 –