0

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()を同様に動作させる方法がわかりません。データを配列に入れる必要があると思いますが、どうすればそれを行うことができ、後でどのようにアクセスできますか?

ありがとう!

4

1 に答える 1

0

次のように方法を変更します

...
$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);
于 2012-09-22T16:51:46.303 に答える