我正在创建一个论坛系统,其中包含论坛,线程,帖子和喜欢。这个问题是关于后两个表的,这两个表是用以下语句创建的:
CREATE TABLE posts
(
postID INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
postDate DATETIME NOT NULL,
postContent TEXT NOT NULL,
postThread INT(8) NOT NULL,
FOREIGN KEY(postThread) REFERENCES threads(threadID) ON DELETE CASCADE ON
UPDATE CASCADE
);
CREATE TABLE likes
(
likeID INT(8) NOT NULL PRIMARY KEY AUTO_INCREMENT,
likeUserID INT(8) NOT NULL,
likePostID INT(8) NOT NULL,
FOREIGN KEY(likePostID) REFERENCES posts(postID),
FOREIGN KEY(likeUserID) REFERENCES users(userID)
);
在每个线程页面(thread.php?id=x
)上,我查询数据库以获得将在我的HTML中回显的以下数据:
SELECT posts.postID, posts.postContent, likes.likePostID
FROM posts
LEFT JOIN likes ON posts.postID = likes.likePostID
WHERE posts.postThread = ?
ORDER BY posts.postDate asc
在phpmyadmin中,当我运行以下语句时会得到以下结果:
postID | likePostID | postContent
1 3 foo
1 3 foo
1 3 foo
2 NULL bar
3 NULL blah
我想知道如何获取LEFT JOIN
返回的行数,其中当前帖子的ID与likePostID
不为空的likePostID
匹配,在上面的示例中,ID为1的帖子的行数为3。页面上的每个帖子都会在“喜欢”按钮附近回显这个值。这可以使用一个查询来完成吗,或者我需要单独查找每个帖子的点赞数量?
我目前正在使用while ($row = mysqli_fetch_assoc($result))
回显所有相关信息。
发布于 2018-07-11 06:28:11
SQL有一个count函数,如下所示:
https://www.w3schools.com/sql/sql_count_avg_sum.asp
select count(column_name) from table where condition
显然,您必须使用您的连接批量扩展该查询,但这会给您一个计数。
否则,php mysqli_num_rows()中会有一个函数返回行数。
https://stackoverflow.com/questions/51274644
复制相似问题