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