如何从类内的 mysqli 查询返回结果并在类外格式化它们



我开始使用mysqli准备语句,并尝试编写一个类方法来检索与某些日期条件匹配的记录,但不显示它们 - 我希望能够在类之外格式化结果。

当类方法

显示结果时,我让类方法工作:

public function periodReceipts(){
    global $db;
    if($query = $db->prepare("SELECT * FROM receipts WHERE date BETWEEN ? AND ? ORDER BY date ASC")){
        $query->bind_param("ss", $this->date1, $this->date2);
        $query->execute();
        $query->bind_result($id, $user_id, $vendor, $amount, $cat, $date);
        $query->fetch();
        while($query->fetch()){
            echo "$id, $user_id, $vendor, $amount, $cat, $date <br/>";
        }
        $query->close();
    }
}

我有一个类似的方法,它执行 MySQLi 查询、检索记录、计算总数并返回未格式化的结果以供稍后显示:

public function runningTotal(){
    global $db;
    if($query = $db->prepare("SELECT amount FROM receipts WHERE user_id = ?")){
        $query->bind_param("i", $this->uid);
        $query->execute();
        $query->bind_result($amount);
        $running_total = 0;
        while($query->fetch()){
            $running_total += $amount;
        }
        $query->close();
    }
    return $running_total;
    $db->close();
}

但是我不知道如何让方法periodReceipts()表现类似。我假设我需要将数据放入数组中,但是我该怎么做,以后如何访问它?

谢谢!

像下面这样更改方法

...
$result = array();
while($query->fetch()){
    $result[] = array(
        'id' => $id,
        'user_id' => $user_id,
        'vendor' => $vendor,
        'amount' => $amount,
        'cat' => $cat,
        'date' => $date
    );
}
$query->close();
return $result;
...

然后,您将在数组中获取所有记录:

$result = $your_class_instance->periodReceipts();
var_dump($result);

最新更新