2014-01-31 83 views
0

嗨第一個結果,我有以下代碼sqlsrv_query缺少while循環

function dropDownMenuMobile($parentId,$siteId,$root=false) 
{ 
    $menu = ""; 
    $sql = "EXEC spGenerateDropdownMenuMobile ".$parentId.",".$siteId; 
    $stmt = sqlsrv_query($GLOBALS['conn'],$sql); 
    sqlsrv_fetch($stmt); 
    if($stmt && sqlsrv_has_rows($stmt) === true) 
    { 
     $menu .= "<ul>"; 
      while($rs = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)) 
      { 
       $urlLink = str_replace("<br />"," ",$rs[2]); 
       $urlLink = replaceIllegalChars($urlLink); 
       $actualLink = (strlen($rs[7]) > 2) ? $rs[7] : $rs[0]."/".makeSEurl($urlLink); 
       $liclass = ($rs["5"] > 0)?"expand":""; 
       $menu .= "<li class=\"".$liclass."\">"; 
        $menu .= "<a href=\"/".$actualLink."\">".$rs[2]."</a>"; 
        $menu .= ($rs[5] > 0) ? dropDownMenuMobile($rs[0],$siteId,"") : ""; 
       $menu .= "</li>"; 
      } 
     $menu .= "</ul>"; 
    } 
    return $menu; 
} 

它運行在其他許多地方,但由於某種原因在while循環它似乎每一次失蹤的第一個結果其所謂。

回答

1

我想,那是因爲你運行

sqlsrv_fetch($stmt); 

其中獲取第一結果和運行

sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC) 

之後繼續取第二個結果。

只需刪除第一次獲取。

+0

輝煌的感謝,所有排序 –

+0

如果我的回答幫助你,請爲此投票。謝謝。 –

+0

+1簡要回答 – sergio