gpt4 book ai didi

php - 根据 cookie 数据连接两个表

转载 作者:行者123 更新时间:2023-11-29 15:09:42 24 4
gpt4 key购买 nike

我正在制作一个基于 cookie 的收藏夹系统,需要根据 cookie 中存储的唯一用户 ID 连接两个表中的数据,以便我可以知道哪些项目已标记为收藏夹。

我知道我需要进行 JOIN,但还没有经常使用它们,而且还没有真正了解它们。

从数据库中选择项目的现有查询:

$query = mysql_query("SELECT *, UNIX_TIMESTAMP(`date`) AS `date` FROM songs WHERE date >= DATE_SUB( NOW( ) , INTERVAL 2 WEEK ) ORDER BY date DESC");

我的收藏夹表设置为:ID FAVORITE USERID,其中 ID 是主键,FAVORITE 是表歌曲中的歌曲 ID,USERID 是存储在 cookie 中的哈希值。

我需要加入收藏夹表中 USERID 字段与 cookie 哈希变量匹配的所有行。

我还需要收集与歌曲 ID 匹配的收藏夹中的总行数,以便我可以显示将该项目设置为收藏夹的人数,以便我可以显示有多少人喜欢它。但也许需要将其作为单独的查询来执行?

最佳答案

我想这应该可以:

$user_id = intval($_COOKIE['user_id']);
$query = mysql_query(sprintf("
SELECT *
FROM songs s
INNER JOIN favorites f
ON f.favorite = s.id
WHERE f.userid = %s
", $user_id));

你可能应该read up关于不同类型的连接。

然后要获取返回的总行数,您可以调用 mysql_num_rows关于结果:

$favorite_song_count = mysql_num_rows($query);

编辑:要选择所有歌曲但记下最喜欢的歌曲,您可以这样做:

$query = mysql_query(sprintf("
SELECT s.*, f.id as favorite_id
FROM songs s
LEFT JOIN favorites f
ON f.favorite = s.id AND f.userid = %s
", $user_id));

通过将其从 INNER JOIN 切换到 LEFT JOIN,我们将选择所有歌曲,即使它们在收藏夹表中没有相应的记录。所提供的 user_id 最喜欢的任何歌曲都将具有非 NULL 的 favorite_id 值。

关于php - 根据 cookie 数据连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com