[英]sqlsrv_query missing first result in while loop
Hi I have the following code 嗨,我有以下代码
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;
}
it runs in numerous other places, but for some reason in the while loop it seems to be missing the first result every time its called. 它在其他许多地方运行,但是由于while循环中的某种原因,每次调用它似乎都缺少第一个结果。
I think it is because you run 我想是因为你跑
sqlsrv_fetch($stmt);
Which fetches first result and after you run 在运行后获取第一个结果
sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)
which continues fetching second result. 继续获取第二个结果。
Just remove first fetch. 只需删除第一次提取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.