2016-09-18 151 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; 
       } 
      } 
     }