提问者:小点点

先后创建两个sqlsrv_fetch_array问题


可能是一个newb问题,但是当我一个接一个地放入两个PHP sqlsrv_fetch_array语句时,第二个语句从来都不起作用。 它就会返回空白。

因此,如果我创建两个简单的下拉菜单,从sqlsrv_fetch_array调用它们的值,那么我将在第一个下拉菜单中获得所有值,但在第二个下拉菜单中没有。

<?php 

echo "<select>";
while( $PersonRow = sqlsrv_fetch_array( $PersonDropdownArray, SQLSRV_FETCH_BOTH))  
{  
    echo "<option value=\"".$PersonRow['Person']."\">".$PersonRow['Person']."</option>";
}  
echo "</select>" ;


echo "<select>";
while( $PersonRow = sqlsrv_fetch_array( $PersonDropdownArray, SQLSRV_FETCH_BOTH ))  
{  
    echo "<option value=\"".$PersonRow['Person']."\">".$PersonRow['Person']."</option>";
}  
echo "</select>" ;
?>

在第一次运行数组中的所有值之后,它似乎没有任何东西可以运行第二次,所以我的第二个下拉菜单是空白的。 但是有人知道如何重置它,以便在第二次调用sqlsrv_fetch_array时回到数组的开头吗?


共2个答案

匿名用户

在它第一次遍历数组中的所有值之后,它似乎没有任何东西可以在第二次遍历

是的,在您获取所有行之后,就没有更多的行了。 只要取一次,把你需要的存起来。 给出代码的一种方法是:

$options = '';
while( $PersonRow = sqlsrv_fetch_array( $PersonDropdownArray, SQLSRV_FETCH_BOTH))  
{  
    $options .= "<option value=\"".$PersonRow['Person']."\">".$PersonRow['Person']."</option>";
}  

echo "<select>$options</select>";
echo "<select>$options</select>";

仅供参考,您需要给select输入一个名称,以便在提交时获得它们。

匿名用户

下面是怎么做的:

我只需通过重新声明以下内容,将查询重新分配到已有的数组:

$PersonDropDownArray=sqlsrv_query($CONN,$PersonDropDownQuery);

如追随者所言:

<?php 

echo "<select>";
while( $PersonRow = sqlsrv_fetch_array( $PersonDropdownArray, SQLSRV_FETCH_BOTH))  
{  
    echo "<option value=\"".$PersonRow['Person']."\">".$PersonRow['Person']."</option>";
}  
echo "</select>" ;

$PersonDropdownArray = sqlsrv_query( $conn, $PersonDropdownQuery);    

echo "<select>";
while( $PersonRow = sqlsrv_fetch_array( $PersonDropdownArray, SQLSRV_FETCH_BOTH ))  
{  
    echo "<option value=\"".$PersonRow['Person']."\">".$PersonRow['Person']."</option>";
}  
echo "</select>" ;
?>