2016-09-18 86 views
-3

所以我正在学习编写函数。现在我知道如何将东西回显到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())并用回声,但我似乎无法使其工作。那我该怎么做呢?

+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']; 
    } 
} 
+0

有人可以解释downvote请 – RiggsFolly

-1

“我曾尝试这样的东西print_r($overig->gevens())并用回声,但我似乎无法使其工作。所以我怎样才能做到这一点?”

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

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

类:

<?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; 
       } 
      } 
     }