首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PDO迭代重调调用函数变量?

如何使用PDO迭代重调调用函数变量?
EN

Stack Overflow用户
提问于 2021-11-20 18:32:21
回答 1查看 32关注 0票数 0

目前,我很难遍历存储在单独文件中的函数中的结果集,我将如何遍历这个变量集?

请参阅下面的示例代码。

list.classes.php

代码语言:javascript
复制
class Lists extends Dbh {
    public function getCountries() {
      $stmt = $this->connect()->prepare("EXEC spl_countries");

      if(!$stmt->execute()) {
        $stmt = null;
        header("location: ../index.php?error=stmtfailed");
        exit();
      }

      if($stmt->rowCount() == 0) {
        $stmt = null;
        header("location: ../index.php?error=countrynotfound");
        exit();
      }
      return $stmt;
    }
}

spl_countries

代码语言:javascript
复制
IF EXISTS(SELECT * FROM dbo.sysobjects
          WHERE ID = OBJECT_ID(N'spl_countries')
          AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)

BEGIN
    PRINT 'DROPPING THE STORED PROCEDURE spl_countries';
    DROP PROCEDURE spl_countries;
END
GO

PRINT 'CREATING THE STORED PROCEDURE spl_countries';
GO

CREATE PROCEDURE spl_countries
AS 
    SELECT countryID, country, iso2, iso3, phoneCode, niceName, numCode FROM CO_Country GROUP BY countryID, country, iso2, iso3, phoneCode, niceName, numCode ORDER BY country ASC

RETURN

test.php

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://unicons.iconscout.com/release/v3.0.6/css/line.css">
    <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous"/>
</head>
<body style="background-color:#404258;">
    <?php
    //require('admin.sidebar.php');
    include "classes/dbh.classes.php";
    include "classes/list.classes.php";

    $listCountry = new Lists();
    $listCountry->getCountries();

    ?>
    <div class="col">
                    <div class="form-outline">
                      <select class="form-select" aria-label="Default select example" id="form-contactType">
                        <?php
                        while($row = $listCountry->fetch(PDO::FETCH_ASSOC)) {
                          echo "<option value=".$row['countryID'].">".$row['phoneCode']."</option>";
                        }
                        ?>
                        <!--<option selected>Open this select menu</option>
                        <option value="1">One</option>
                        <option value="2">Two</option>
                        <option value="3">Three</option>-->
                      </select>
                      <label for="form-contactType" class="form-label" >Contact Type</label>
                    </div>
                  </div>
</body>
</html>

打开PHP文件时收到以下错误

致命错误:未定义的错误:调用C中的未定义方法列表::fetch():\xampp\htdocs\BusinessSolution\test:128个堆栈跟踪:#0 {main}抛入C:\xampp\htdocs\BusinessSolution\test.php中

我不确定在getCountries()中循环返回变量的正确步骤是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-20 19:04:42

您需要将返回的值存储在变量中,或者只需迭代方法调用的结果。

代码语言:javascript
复制
$listCountry = new Lists();
$countries = $listCountry->getCountries();
foreach($countries as $country) {

}

代码语言:javascript
复制
$listCountry = new Lists();
foreach($listCountry->getCountries() as $country) {

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70048788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档