我需要什么查询来确定用户是否喜欢另一个?

时间:2014-04-18 17:06:58

标签: php mysql

我为这个简单的问题道歉,但我有一个完整的空白,因此标题的措辞含糊不清。

我已经建立了一个简单的PHP / MySQL用户偏好系统,除了一个部分外,它可以正常工作。一旦用户对另一个用户有所帮助,我就无法想到如何向用户展示他们已经偏爱该用户。

这是我到目前为止所做的:

if (($user_data['username'] == $profile_data['username']) === false) { 
   if () { ?>
       // Favourite user        
<?php } else { ?>
       //See whether favourited or unfavourite user                 
<?php } } ?>

favourites的表格结构只有两列,favouritee是受欢迎的个人资料,而favouriter是当前用户最喜欢的。此表连接到主users表,列由用户名字符串填充。

修改

这是我到目前为止所得到的:

$username = $user_data['username'];
$favouritee = $profile_data['username'];

$check_fav = mysqli_query("SELECT `id` FROM `favourites` WHERE (`favouritee` = '$favouritee' AND `favouriter` = '$username')");

if (mysqli_num_rows($check_fav) == 1) {
           // Favourite user    
} else {
           //See whether favourited or unfavourite user                 
}

2 个答案:

答案 0 :(得分:0)

要查找用户是否喜欢其他用户,请假设$myUsername为会话中登录用户的用户名,并假设$otherUsername来自其他用户的个人资料页面(或者可能是分页用户)用户列表。)

SELECT 1 FROM favourite
WHERE favouriter = :favouriter AND favouritee = :favouritee

然后,您可以将参数$myUsername注入:favouriter$otherUsername注入:favouritee,如果您获得一行,您已经拥有了最喜欢的连接,并且如果您获得了零行,没有最喜欢的连接。

这只是原始查询,所以当然你需要在此周围添加PHP数据库代码。如果您对此不熟悉,请在php.net上查看PDO或MySQLi的文档 - 这两个部分将提供足够的信息以帮助您启动和运行。

也就是说,假设用户名存储在user表中,我倾向于将favourite表中的两列切换为整数外键 - 它会更快并且会节省磁盘空间。我打电话给这些from_user_idto_user_id,以明确它们的外键和最爱的方向。

答案 1 :(得分:0)

(代表OP发布)

工作代码:

if (($user_data['username'] == $profile_data['username']) === false) {

   $username = $user_data['username'];
   $favouritee = $profile_data['username'];

   $check_fav = mysqli_query("SELECT `id` FROM `favourites` WHERE (`favouritee` = '$favouritee' AND `favouriter` = '$username')");

      if (mysqli_num_rows($check_fav) == 1) {
         // Favourite user 
      } else {
        // Unfavourited/check
      }                     
   }