有三张桌子,
存储用户详细信息
存储组详细信息
存储用户和组标识。
我需要检查用户是否已经是一个组的成员。我用这个查询来实现:

SELECT u.id, g.id
FROM users u, groups g
INNER JOIN user_groups ug
ON ug.user_id = u.id AND ug.group_id = g.id
WHERE ug.user_id = ? AND ug.group_id = ?

但这让我犯了个错误:
Call to a member function bind_param() on boolean in

我已经检查了我的查询中是否有拼写错误的单词,一切正常。
编辑:
这里有一个函数:
public function isUserMember($user_id, $group_id) {
        $stmt = $this->conn->prepare("
            SELECT u.id, g.id from users u, groups g
            INNER JOIN user_groups ug
            ON ug.user_id = u.id AND ug.group_id = g.id
            WHERE ug.user_id = ? AND ug.group_id = ?");
        $stmt->bind_param("ii", $user_id, $group_id); // here i'm getting an error
        $stmt->execute();
        $stmt->store_result();
        $num_rows = $stmt->num_rows;
        $stmt->close();
        return $num_rows > 0;
}

最佳答案

尝试下列更改
删除了不必要的用户表联接,因为如果您有用户id和组id,则不需要将其与用户联接

SELECT ug.id, g.id
from  user_groups ug
inner join  groups g
on ug.group_id = g.id
WHERE ug.user_id = ? AND ug.group_id = ?

关于php - 我在此查询中做错了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38084980/

10-14 13:58
查看更多