我有 2 个表:
用户(ID、用户名、电子邮件、头像等);
好友(id、用户 1、用户 2、状态);
现在我想在我的个人资料页面上建立一个我的朋友列表,那里有头像。我自己尝试了大约 4 个小时,但我不明白...... :(
顺便说一句:这是我得到的错误!
注意:数组到字符串的转换在/home/reduaqi158/domains/reduankurtaj.eu/public_html/snapfriends/vrienden.php 第 26 行
这就是我现在拥有的:
<?php
error_reporting(E_ALL);
session_start();
$username = $_SESSION['username'];
$status = 2;
include "includes/conn.php";
$vrienden=mysqli_query($server,"SELECT * FROM vrienden WHERE status='$status' && vriend1='$username' || vriend2='$username' ");
$vriend_list = array();
while($row = mysqli_fetch_array($vrienden))
{
if ($row['vriend1'] == $username) {
$vriend_list[] = $row['vriend2'];
}
else {
$vriend_list[] = $row['vriend1'];
}
}
echo json_encode($vriend_list);
$foto=mysqli_query($server,"SELECT prof_pic FROM users WHERE username='$vriend_list['vriend1''vriend2']' ");
while($row2 = mysqli_fetch_array($foto)) {
echo "<img class='img-rounded' src=assets/profiel/".$row2['prof_pic']." alt='Card image cap'>";
}
?>
json_encode输出:
["ja","阿曼多"]
可以帮助我的人请:)
你最初的方法非常混乱。
代码中的几乎所有内容都可以替换为单个SQL
查询。
您可以使用JOIN
一次性获得所有朋友的头像:
SELECT u.username as username, u.avatar as avatar,.... <== all columns which you need
FROM `friends_table` f <== your friends table
JOIN `users_table` u <== your users table
ON (f.user1 = u.id) <== notice that i join on user1 column
WHERE u.username = '$username' && f.status = '$status'
UNION
SELECT u.username as username, u.avatar as avatar,.... <== same columns
FROM `friends_table` f <== your friends table
JOIN `users_table` u <== your users table
ON (f.user2 = u.id) <== notice that i join on user2 column
WHERE u.username = '$username' && f.status = '$status'
通过此查询,您可以选择与您的$username建立友谊的所有用户。您需要union
,因为您不知道$username
位于哪个字段(user1
或user2
)。
注意:我强烈建议使用预准备语句,而不是只将"$var"放在查询SQL
以防止SQL注入。
执行此查询后,您可以按以下方式解析结果并显示头像:
while($row = mysqli_fetch_array($vrienden, MYSQLI_ASSOC))
{
echo "<img class='img-rounded' src=assets/profiel/".$row['avatar']." alt='Card image cap'>";
}
我希望你明白了。
在你的 while 语句中,你必须为数组声明一个值。 像数组[0] = 值。 这样你就知道数组位置 0 具有一定的值。就像我在下面所做的那样。不知道它是否像这样在 PHP 中,但在 .net 中确定您必须声明值在数组中的位置。
while($row = mysqli_fetch_array($vrienden))
{
if ($row['vriend1'] == $username) {
$vriend_list[0] = $row['vriend2'];
}
else {
$vriend_list[1] = $row['vriend1'];
}
}
和以下内容
$foto=mysqli_query($server,"SELECT prof_pic FROM users WHERE username='$vriend_list['vriend1''vriend2']' ");
不应该是$vriend_list['vriend1'] . $vriend_list['vriend2']'
您必须使用连接字符(PHP 中的 .