来自数据库

时间:2016-09-18 17:28:27

标签: php mysql pdo

所以我正在学习编写函数。现在我知道如何回复东西到foreach但我不知道如何在foreach外面打印一行(就像我在我的表中只有一行并且想要打印id和用户名)我该怎么办这个? 我的职责:

public function gegevens(){
    $stmt = $this->conn->prepare("SELECT * FROM gegevens_locatie");
    $stmt->execute();

    $result = $stmt->fetchAll();

    //Return result
    return $result;
}

当我在我的另一页上调用该功能时,我称之为:

require_once 'class/class.overig.php';
$overig = new OVERIG();

我尝试过像print_r($overig->gevens())这样的东西和一个回声,但我似乎无法让它发挥作用。那我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

因为您使用的是->fetchAll(),所以即使只返回一行,您也会获得一系列行。您还需要在通话中使用正确的方法名称。

所以你需要做的就是

$arr = $overig->gegevens();

if ( count($arr) == 1 ) {
    echo $arr[0]['id'];
    echo $arr[0]['username'];
}

if ( count($arr) > 1 ) {
    foreach ( $arr as $row) {
        echo $row['id'];
        echo $row['username'];
    }
}

答案 1 :(得分:-1)

  

“我已经尝试过像print_r($overig->gevens())这样的东西和一个回声,但我似乎无法使其发挥作用。那么我该怎么做呢?”

您调用的方法的名称与类中方法的名称不匹配。在您的班级中,您有:gegevens(),但在您的通话中:您指定了:gevens()。除非这只是一个正常的错字;你应该从那里开始你的调试。

换句话说;您的来电应该是:print_r($overig->gegevens())

  

THE CLASS:

    <?php

        class OVERIG{
            public function gegevens(){
                $stmt = $this->conn->prepare("SELECT * FROM gegevens_locatie");
                $stmt->execute();

                $result = $stmt->fetchAll();

                //Return result
                return $result;
            }
        }
  

使用课程

    <?php

        require_once 'class/class.overig.php';
        $overig = new OVERIG();
        $result = $overig->gegevens();

        // TRY DUMPING THE VARIABLE: $result:
        var_dump($result);


        // TO ECHO OUT SOME VALUES:
        if($result){
            foreach($result as $key=>$item){
                if(is_string($item)){
                    echo $item;
                }
            }
        }