我想要从表 list (见下文)中检索表 listUser 中的所有帖子,以及与特定用户ID匹配(在同一个表中, listUser )。但是,查询似乎有些问题,因为我收到以下错误消息。
我绑定了与 list 相同数量的字段,所以不是这样。但是,不应检索所有列表,只检查表 listUser 中匹配的listId以及userId in匹配的列表。
我希望所有这一切都有道理,否则请告诉我。
警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:绑定变量数与/ Applications / XAMPP / xamppfiles / htdocs / Collaborage / Model / Database中预准备语句中的字段数不匹配第166行的.php
型号:
public function GetAllAssignedLists($userId) {
$query = "SELECT * FROM list AS l
INNER JOIN listUser AS lu
ON l.listId = lu.listId
WHERE l.userId = ?";
$stmt = $this->m_db->Prepare($query);
$stmt->bind_param('i', $userId);
$assignedLists = $this->m_db->GetLists($stmt);
return $assignedLists;
}
数据库:
public function GetLists($stmt) {
if ($stmt === FALSE) {
throw new \Exception($this->mysqli->error);
}
if ($stmt->execute() == FALSE) {
throw new \Exception($this->mysqli->error);
}
if ($stmt->bind_result($listId, $userId, $listName, $creationDate, $expireDate, $isPublic) == FALSE) {
throw new \Exception($this->mysqli->error);
}
while ($stmt->fetch()) {
$lists[] = array('listId' => $listId,
'userId' => $userId,
'listName' => $listName,
'creationDate' => $creationDate,
'expireDate' => $expireDate,
'isPublic' => $isPublic);
}
$stmt->Close();
return $lists;
}
答案 0 :(得分:1)
试试这个:
$query = "SELECT * FROM list AS l
INNER JOIN listUser AS lu
ON l.listId = lu.listId
WHERE l.userId = :user";
$stmt = $this->m_db->Prepare($query);
$stmt->bindParam(':user', $userId);
答案 1 :(得分:0)
结果集中有10列,但您只绑定其中的6列。
而不是SELECT *
,明确命名要选择的列更安全。