3

所以我试图从数据库中获取多个东西。它不工作。在我的函数文件中,我有:

public function getAllMultiple($username, $course) {
        foreach ($course as $key) {
        $query = $this->database->db->prepare("SELECT * FROM `status` WHERE `posted_by` = ? OR `shared` = ? ORDER BY `date_added` DESC");
        $query->bindValue(1, $username);
        $query->bindValue(2, $key['1']);
        try {
            $query->execute();
        } catch (PDOException $e) {
            die($e->getMessage());
        }
            return $query->fetchAll();
        }
}

在我的提要功能中,我有:

$array = $course->getAllAsMember($username);
print_r($course->getAllMultiple($username, $array);

我有两门课程。我有一个药物课程和一个班级课程。不幸的是,它只是返回药物课程。有什么我做错了吗?

4

2 回答 2

1

要扩展我的评论,您可以执行以下操作:

public function getAllMultiple($username, $course) {
    $query = $this->database->db->prepare("SELECT * FROM `status` WHERE `posted_by` = ? OR `shared` = ? ORDER BY `date_added` DESC");
    $results = array();
    foreach ($course as $key) {

        $query->bindValue(1, $username);
        $query->bindValue(2, $key['1']);
        try {
            $query->execute();
        } catch (PDOException $e) {
            die($e->getMessage());
        }
        results[] = $query->fetchAll();
     }
    return $results;
}

您还应该改进错误处理,例如将所有内容都放在try-catch块中,而不仅仅是其中的一部分。

于 2013-12-29T21:57:09.853 回答
1

函数的返回位停止函数的执行并返回值。如果要返回执行的查询的两个结果,则需要将它们分配给数组,然后返回:

public function getAllMultiple($username, $course) {
    $return = array(); //initialize the array before the foreach function
    foreach ($course as $key) {
        $query = $this->database->db->prepare("SELECT * FROM `status` WHERE `posted_by` = ? OR `shared` = ? ORDER BY `date_added` DESC");
        $query->bindValue(1, $username);
        $query->bindValue(2, $key['1']);
        try {
            $query->execute();
        } catch (PDOException $e) {
            die($e->getMessage());
        }
        $return[] = $query->fetchAll(); //collect the results
    }
    return $return; //return the array
}

希望我的评论是不言自明的。

于 2013-12-29T21:57:24.890 回答