2016-05-16 7 views
0

Ich lerne immer noch PHP OOP und Englisch.
Ich weiß nicht, wie ich das Ergebnis aus der Datenbank zurücksende. Ich schrieb Methode, die Ergebnisse zurückgibt:Ergebnis aus der Datenbank zurückgeben PHP OOP

class Serial extends DbUser { 

public $history, $sn, $added, $numrows; 

function __construct() { 
    parent::__construct('localhost', 'michal', '', 'test'); 

} 

function historyProduct($sn) { 
    $result = $this->history = $this->conn->prepare("SELECT * FROM `products` WHERE sn = ?"); 
    $result = $this->history->bind_param('s', $sn); 
    $result = $this->history->execute(); 
    $result = $this->history->get_result(); 
    return $result; 
    while ($row = mysqli_fetch_array($result)) { 
     $this->sn = $row['sn']; 
     $this->added = $row['added']; 
    } 
    $this->numrows = mysqli_num_rows($result); 

} 

function __toString() { 
    return (string) $this->numrows; 
} 

} 

$sn = $_GET['sn']; 
$history = new Serial(); 
$history->historyProduct($sn); 
printf($history); 
echo $history->added; 

Aber diese Methode zeigt nichts an.

Ich habe mit dieser versucht: return values from class php oop
Was mache ich falsch?

Michał.

+0

Die Zeile 'return $ result;' in Ihrer Methode stellt ziemlich sicher, dass nichts für die Eigenschaften 'added' und 'numrows' der Klasse gesetzt wird; – YvesLeBorg

Antwort

0

Eine PHP-Funktion wird nur verarbeitet, bis sie eine return-Anweisung erreicht. Dies hätte den gleichen Effekt wie beispielsweise "break". Außer dass es den Wert zurückgibt.

Wenn Sie möchten, dass Ihre while-Klausel ausgeführt wird, müssen Sie die return-Anweisung ganz am Ende Ihrer Methode platzieren.

Auch für bessere Lesbarkeit würde ich vorschlagen, dass Sie den Ergebniswert einmal und nicht für jeden $ this-> Verlaufsmethodenaufruf setzen.