您好我有以下代码
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循环中,它似乎每次调用时都缺少第一个结果。
答案 0 :(得分:1)
我认为这是因为你运行
sqlsrv_fetch($stmt);
获取第一个结果并在您运行
之后sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)
继续获取第二个结果。
只需删除第一次获取。