2012-01-06 120 views
0

我有一個while循環從查詢調用$ resultMysql查詢While while循環內的錯誤

這裏面while循環我有其他兩個查詢$ anchors1$ anchors2

第一個檢索前兩排;

第二個應該檢索後面的使用偏移量

由於某些原因,查詢似乎互相影響,不顯示3行並拉出不應該在那裏的重複行。

有什麼辦法可以解決這個問題嗎? 如果我刪除第一個,則第二個查詢將起作用。反之亦然。

該平臺是Wordpress。

while($slice = mysql_fetch_assoc($result)){ 

     $i++; 

    if($enable_position1 == 'y' && $i == $position[0]): 

     $anchors1 = mysql_query("SELECT * FROM anchors WHERE site_url = '$site_current' LIMIT 3"); 
     while($anc = mysql_fetch_assoc($anchors)){ 
     $site_anchor = $anc['site_anchor']; 
     $site_current = $anc['site_current']; 
     echo '<li><a href="'.$site_current.'" title="'.$site_anchor.'" target="_self">'.$site_anchor.'</a></li>'; 
     } 

    elseif($enable_position2 == 'y' && $i == $position[1]): 

     $anchors2 = mysql_query("SELECT * FROM anchors WHERE site_url = '$site_current' LIMIT 999 OFFSET 3"); 
     while($anc2 = mysql_fetch_assoc($anchors2)){ 
     $site_anchor2 = $anc2['site_anchor']; 
     $site_current2 = $anc2['site_current']; 
     echo '<li><a href="'.$site_current2.'" title="'.$site_anchor2.'" target="_self">'.$site_anchor2.'</a></li>'; 
     } 

    else: 

     the_post(); 

    endif; 

} 

非常感謝!

+0

在您的第二個查詢中,當然'OFFSET 3'會導致無限結果集中的第三行作爲有限結果集的第一行返回。你不需要把它改成'OFFSET 4'嗎? – Atonewell 2012-01-06 22:17:27

回答

0

在第二個查詢中,您正在使用變量$site_current,該變量在第一個查詢的塊中設置。根據應用程序的設計方式,這可能會導致干擾。我想你的意思是把$site_current2放在那裏。

+0

That worked,ty :)這很奇怪,但$ site_current具有相同的值(這是一個多平臺應用程序)。我做的是$ site_current2 = $ site_current;並應用您提出的更改。爲什麼會干涉? – webmasters 2012-01-06 22:24:41

+0

可能是因爲你在第一次循環的每一次迭代中重寫變量。 '$ site_current'是來自應用程序的其他部分嗎?你應該避免重寫變量,它們會導致像這樣的錯誤。 – DfKimera 2012-01-06 22:38:26