我正在創建一個基於PHP的快速論壇,每個帖子在論壇中都會顯示在其「父」帖子下,但稍微縮進一些。PHP/MySQL嵌套提取?
要獲得該訂單的所有帖子,我有以下功能:
private function getData($pid, $offset)
{
$sql = 'SELECT id, subject, date
FROM post
WHERE forum_id = ? AND parent_id = ?';
$sth = $this->db->prepare($sql);
$sth->bind_param("ii", $this->id, $pid);
$sth->bind_result($id, $subject, $date);
$sth->execute();
$data = array();
while ($sth->fetch())
{
$row['id'] = $id;
$row['subject'] = $subject;
$row['date'] = $date;
$row['offset'] = $offset;
//Add this 'parent' post to the data array
$data[] = $row;
//Before moving on to next post, get all its children
$data[] = $this->getData($id, $offset+1);
}
$sth->close();
return $data;
}
,因爲我將結束,並從我目前的語句處理程序獲取的所有數據之前執行另一個查詢這是行不通的。
有沒有辦法可能分開查詢,使他們不相互衝突?或者任何其他方式繞過這個?或者我只需要重組我如何獲取數據?
當你saythat這是行不通的,因爲你沒有開始一個新的前關閉一個查詢,你能更具體?你看到了什麼結果,或者什麼錯誤信息? –
我有一個警告說:「所有數據必須在新的語句準備發生之前被提取」,這導致我的prepare()返回false並給我一個非對象錯誤。 – Benjamin