PHP MSSQL活动结果中没有更多行

PHP MSSQL活动结果中没有更多行,php,sql-server,Php,Sql Server,我在php中有这段代码,如果我尝试单独运行每个while循环,它就会运行,但是当我尝试执行嵌套whileloop时,它输出了一个错误 Fatal error: Uncaught PDOException: SQLSTATE[IMSSP]: There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved. in C:\xam

我在php中有这段代码,如果我尝试单独运行每个while循环,它就会运行,但是当我尝试执行嵌套whileloop时,它输出了一个错误

Fatal error: Uncaught PDOException: SQLSTATE[IMSSP]: There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved. in C:\xampp\htdocs\survey-module\survey.php:13 Stack trace: #0 C:\xampp\htdocs\survey-module\survey.php(13): PDOStatement->fetch() #1 {main} thrown in
下面是Php代码

   $survey_detail=$survey->viewSurvey('3');
        $questions=$survey->indexQuestion('3');

        while ($question_header = $header_questions->fetch()){
            while ($question_detail = $questions->fetch()){
                if($question_detail['header']==$question_header['header']){
                echo $question_detail['header'] . "-".$question_detail['question']. "<br>";
                }
            }
        }
$survey\u detail=$survey->viewSurvey('3');
$questions=$survey->indexQuestion('3');
而($question\u header=$header\u questions->fetch()){
而($question\u detail=$questions->fetch()){
if($question_detail['header']=$question_header['header'])){
echo$question_detail['header']。“-”$question_detail['question']。“
”; } } }
很明显,MSSQL不允许在嵌套的while中进行多次获取,因此我所做的是获取数据并将其放入关联数组中,下面是代码

$question_array = array();
while ($question = $questions->fetch()) {
    $question_push = array('header'=>$question['header'],'question'=>$question['question']);
    array_push($question_array,$question_push);
}
while ($question_validation =$header_questions->fetch()) {
    foreach ($question_array as $key => $value) {
        if($question_validation['header']==$value['header'])
        {
            echo $value['header'] ."-". $value['question'] ."<br>";
        }
    }
}
$question_array=array();
而($question=$questions->fetch()){
$question_push=array('header'=>$question['header'],'question'=>$question['question']);
数组推送($question\u数组,$question\u推送);
}
while($question\u validation=$header\u questions->fetch()){
foreach($key=>value的问题数组){
if($question_validation['header']==$value['header']))
{
echo$value['header']。“-”$value['question']。“
”; } } }
很明显,MSSQL不允许在嵌套的while中进行多次获取,因此我所做的是获取数据并将其放入关联数组中,下面是代码

$question_array = array();
while ($question = $questions->fetch()) {
    $question_push = array('header'=>$question['header'],'question'=>$question['question']);
    array_push($question_array,$question_push);
}
while ($question_validation =$header_questions->fetch()) {
    foreach ($question_array as $key => $value) {
        if($question_validation['header']==$value['header'])
        {
            echo $value['header'] ."-". $value['question'] ."<br>";
        }
    }
}
$question_array=array();
而($question=$questions->fetch()){
$question_push=array('header'=>$question['header'],'question'=>$question['question']);
数组推送($question\u数组,$question\u推送);
}
while($question\u validation=$header\u questions->fetch()){
foreach($key=>value的问题数组){
if($question_validation['header']==$value['header']))
{
echo$value['header']。“-”$value['question']。“
”; } } }
您可以尝试获取数据并将其与null进行比较,因为我发现,当您获取最后一行时,下一行变为null,然后获取下一行将引发异常
活动结果集中没有更多行

这很奇怪,不应该起作用-在尝试获取不存在的行时,我更希望获取
false

尽管如此,它仍然有效,我不会抱怨;)

$survey\u detail=$survey->viewSurvey('3');
$questions=$survey->indexQuestion('3');
while($question\u header=$header\u questions->fetch())!==null){
while($question\u detail=$questions->fetch())!==null){
if($question_detail['header']=$question_header['header'])){
echo$question_detail['header']。“-”$question_detail['question']。“
”; } } }
您可以尝试获取数据并将其与null进行比较,因为我发现,当您获取最后一行时,下一行变为null,然后获取下一行将引发异常
活动结果集中没有更多行

这很奇怪,不应该起作用-在尝试获取不存在的行时,我更希望获取
false

尽管如此,它仍然有效,我不会抱怨;)

$survey\u detail=$survey->viewSurvey('3');
$questions=$survey->indexQuestion('3');
while($question\u header=$header\u questions->fetch())!==null){
while($question\u detail=$questions->fetch())!==null){
if($question_detail['header']=$question_header['header'])){
echo$question_detail['header']。“-”$question_detail['question']。“
”; } } }
May one是有帮助的。@Jaydepmor无法理解他们的laguange,他说“解决这个问题的一种方法是通知服务器查询/命令已经结束,不需要任何类型的同步。在execute()之后调用closeCursor()方法。May one是有帮助的。@Jaydepmor无法理解他们的laguange,他说“解决此问题的一种方法是通知服务器查询/命令已结束,不需要任何类型的同步。在execute()之后调用closeCursor()方法。