所以我试图从数据库中获取多个东西。它不起作用。 在我的函数文件中,我有:
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();
}
}
在我的Feed功能中,我有:
$array = $course->getAllAsMember($username);
print_r($course->getAllMultiple($username, $array);
我有两门课程。我有药物课程和课程课程。不幸的是,它只返回药物课程。有什么我做错了吗?
答案 0 :(得分: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
块中,而不仅仅是其中的一部分。
答案 1 :(得分: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
}
希望我的评论不言自明。