从php函数中检索额外的变量

时间:2013-11-04 13:27:13

标签: php mysql pdo

我试图从我在数据库中的费用表中返回三个参数。 这是我的函数,位于users.php

public function expense($username, $i) {
    $query = $this->db->prepare("SELECT * FROM `expenses` WHERE `username`= ?");
    $query->bindValue(1, $username);
    $i=1;
    $totalSpent=0;

    try{

        $query->execute();
        foreach ($query as $row) {
                    print "Username: " .  $row['username'] .", Amount: ". $row['amount'] ."$, Type: ". $row['type'] .", Date: ". $row['date'] .", Comment: ". $row['comment']   . ".<br>";
                    $totalSpent+=$row['amount'];
                    $i++;
                }

        return $query->fetch();
        return $i;
        return $totalSpent;

    } catch(PDOException $e){

        die($e->getMessage());
    }

}

我已在view.php文件中设置它以检索与用户名匹配的列,如下所示:

        <?php
    $users->expense($username);
    ?>

我的问题是我正在向函数发送一个参数($username),但根据函数,我还想检索$i(实际上是行数)和$totalSpent这是行数量的总数。

查看行工作正常,但我尝试了多种方式但无法设法检索$i$totalSpent变量。

我很新,所以我很期待如何改善我的代码,如果我做错了。

1 个答案:

答案 0 :(得分:0)

您只能从函数调用中返回一个项目,因此请将该项目作为数组或对象:

return array(
    'results' => $query->fetch(),
    'i' => $i,
    'totalSpent' => $totalSpent
);

访问使用:

$returnValues = $users->expense($username);
$userQueryResult = $returnValues['results'];

但是当您使用类时,您还可以使用这些值设置公共类属性,然后只从方法外部访问对象属性

public function expense($username, $i) {
    $query = $this->db->prepare("SELECT * FROM `expenses` WHERE `username`= ?");
    $query->bindValue(1, $username);
    $i=1;
    $totalSpent=0;

    try{

        $query->execute();
        foreach ($query as $row) {
                    print "Username: " .  $row['username'] .", Amount: ". $row['amount'] ."$, Type: ". $row['type'] .", Date: ". $row['date'] .", Comment: ". $row['comment']   . ".<br>";
                    $totalSpent+=$row['amount'];
                    $i++;
                }

        $this->queryResult = $query->fetch();
        $this->i = $i;
        $this->totalSpent = $totalSpent;

    } catch(PDOException $e){

        die($e->getMessage());
    }

}

并使用

进行访问
$users->expense($username);
$userQueryResult = $users->queryResult;

后者将是一种更清洁的方法

相关问题