0
所以,我想檢索列表元素的順序。訂單由用戶設置,並存儲在下表中。因爲我也想檢索列表元素的名稱和描述,所以我需要組合兩個表(見下文)。錯誤的數據從數據庫中檢索
但是,實際檢索的是包含16個元素的數組(應該是4,因爲它現在只存在4個元素)。這個數組太長了,不能發佈到這裏,但如果你有興趣,我會把它放在一個phpFiddle to be found here中。
那麼,我真的試圖找到什麼是錯的(可能總是很容易),但沒有運氣。
非常感謝您的時間和幫助!
listModel.php:
public function GetOrderedElements($userId, $listId) {
// $userId = 46
// $listId = 1
$query = "SELECT le.listElemId, le.listElemName, le.listElemDesc, lo.listElemOrderPlace
FROM listElement AS le
INNER JOIN listElemOrder AS lo
ON le.listId = lo.listId
WHERE lo.userId = ?
AND lo.listId = ?
ORDER BY listElemId";
$stmt = $this->m_db->Prepare($query);
$stmt->bind_param("ii", $userId, $listId);
$listElements = $this->m_db->GetOrderedElements($stmt);
return $listElements;
}
database.php中:
public function GetOrderedElements(\mysqli_stmt $stmt) {
if ($stmt === FALSE) {
throw new \Exception($this->mysqli->error);
}
if ($stmt->execute() == FALSE) {
throw new \Exception($this->mysqli->error);
}
if ($stmt->bind_result($listElemId, $listElemName, $listElemDesc, $listElemOrderPlace) == FALSE) {
throw new \Exception($this->mysqli->error);
}
$listElements = array();
while ($stmt->fetch()) {
$listElements[] = array('listElemId' => $listElemId,
'listElemName' => $listElemName,
'listElemDesc' => $listElemDesc,
'listElemOrderPlace' => $listElemOrderPlace);
}
var_dump($listElements);
$stmt->Close();
return $listElements;
}
從數據庫中:
listElemOrder:
listElemOrderId | listId | listElemId | userId | listElemOrderPlace
1 1 1 46 1
4 1 2 46 4
2 1 3 46 2
3 1 4 46 3
listElement:
listElemId | listElemName | listId | listElemDesc | listElemOrderPlace
1 Elem A 1 Derp NULL
2 Elem B 1 Herp NULL
3 Elem C 1 Lorum NULL
4 Elem D 1 Ipsum NULL
注:表中listElement 'listElemOrderPlace' 是元素的最後命令(所有用戶均),不與所述混合一個在另一個表中具有相同的名稱,這只是特定用戶的列表元素的順序(在這種情況下這是有趣的)。
非常感謝,工作得很好!你知道我如何能夠按排序順序檢索列表元素(1,4,2,3)嗎?無論我嘗試什麼,我都無法按照這個順序排列它們,無論是1,2,3,4還是1,3,2,4。 – holyredbeard