如何在php和MySQL中获取用户的朋友数据?



我在获取用户的朋友数据上有一个问题,正如你所知道的,当你登录facebook并打开你的朋友资料时,你将能够看到所有最新的更新,你的朋友的照片。就像我想做的一样,我有一些数据库表喜欢照片和裁剪(信息表)

所以我想知道如何从2个不同的表或更多的数据?

这是我的代码:

if (isset($_GET['username']) === true && empty($_GET['username']) === false) {
    $username = $_GET['username'];
if (user_exists($username) === true && friend_exists($username) === true) {
    $user_ids = user_id_from_username($username);
    $friend_ids = user_id_from_friend($username);
    $profile_data = user_data($user_ids, 'user_id', 'username', 'password', 'first', 'last', 'mail', 'mobile', 'gender', 'email_code', 'active');
    $friend_photo = user_photos($user_ids,'photo_id','user_id','profile','username');
    echo $friend_photo['username'].'<br>';
    echo $profile_data['username'];

功能:

function user_id_from_username($username){
    $username = sanitize($username);
    return mysql_result(mysql_query(" SELECT `user_id` FROM  `crop` WHERE `username` = '$username'"), 0, 'user_id');
}
function user_id_from_friend($username){
    $username = sanitize($username);
    return mysql_result(mysql_query(" SELECT `user_id` FROM  `photos` WHERE `username` = '$username'"), 0, 'user_id');
}
 function user_exists($username){
    global $username;
    $username = sanitize($username);
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `crop` WHERE `username` = '$username'"), 0) == 1) ? true : false;
}
function friend_exists($username){
    global $username;
    $username = sanitize($username);
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `photos` WHERE `username` = '$username'"), 0) == 1) ? true : false;
}

我该如何解决这个问题?如果有任何技巧,技术人员,如果我必须更改代码,请告诉我。

既然您有user_id作为用户表的主键,并且您有user_id在照片中作为用户user_id的引用。这通常被称为一对多关系,这意味着你有一个user_id拥有许多photos。因为我不确定你的数据库是如何在MySQL中设计和结构的,但我可以假设你可以使用像LEFT JOIN这样的东西。

在MySQL中可以这样做:

SELECT * FROM users
    LEFT JOIN photos ON
    users.user_id = photos.user_id
WHERE users.username = 'theUserName';

这个语句将显示所有属于user_id = 1的照片。

我们可以在PHP中这样写:

"SELECT * FROM `users` LEFT JOIN `photos` ON users.user_id = photos.user_id WHERE `username` = '$username'"

现在,如果你想允许向其他用户显示一个用户的照片,你需要通过创建一个名为users_friends的新表或类似的东西来创建多对多关系(数据透视表)。

在这个表中,你创建了两行,一个叫user_id,另一个叫friend_user_id,这样每个user_id将允许friend_user_id查看自己的照片。

这是它的工作方式。

尝试一下,让我知道,如果这是你正在寻找的

最新更新