PHP MSSQL活动结果中没有更多行
我在php中有这段代码,如果我尝试单独运行每个while循环,它就会运行,但是当我尝试执行嵌套whileloop时,它输出了一个错误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
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()方法。