我正在做一个设置基本社交网络的练习项目。我有一个表,其中包含用户ID,姓名,姓氏和朋友列,其中包含与他们成为朋友的所有其他“用户”的ID号。例如。 3“唐纳德”“鸭子”“4,5,23,42” 如果我知道值,则以下内容有效:
if(mysqli_connect_errno($con)) {
echo "failed to connect" . mysql_connect_error();
} else {
$resulting = mysqli_query($con, "SELECT * FROM $tbl_name WHERE LastName LIKE '%$secondquery%'
OR LastName LIKE '%$firstquery%'
OR LastName LIKE '%$thirdquery%'
OR LastName LIKE '%$fourthquery%'
OR FirstName LIKE '%$secondquery%'
OR FirstName LIKE '%$firstquery%'
OR FirstName LIKE '%$thirdquery%'
OR FirstName LIKE '%$fourthquery%'
");
$counting = mysqli_num_rows($resulting);
if($counting != 0){
while($row = mysqli_fetch_array($resulting))
{
if($row['Profile'] != null) {
$defaultprofilepic = $row['Profile'];
}else {
$defaultprofilepic = "defaultprofile.JPG";
}
$PublicProfile = $row['ProfilePage'];
$Friends = array("4", "5", "23", "42")
if(in_array(42, $Friends)){
echo $row['FirstName'] . " is your friend!";
} else {
echo "Connect with " . $row['FirstName'];
}
}
}
}
但是,无论数据如何在数据库中显示(例如“1”,“2”,“42”或“1,2,3,4”或1 2),我都无法正常工作3 4.如果42是列表中的第一个,那么它通常会起作用,但这不是很有帮助!
$Friends = array($row['Friends'];
if(in_array(42, $Friends)) {
echo $row['FirstName'] . " is your friend!";
} else {
echo "Connect with " . $row['FirstName'];
}
我知道可能有更好的方法,甚至存储相关数据,所以欢迎任何建议!我也知道以下可能容易受到sql注入(因为“查询”来自用户搜索),但是没有正确理解它,所以对此的帮助也会很好。谢谢!
答案 0 :(得分:3)
你应该创建一个新表,例如'friends',并包含在其中,结构如下:user_id | friend_id。它应该是这样的:
user_id | friend_id
1 | 1
1 | 2
1 | 3
2 | 4
并且
SELECT * FROM friends WHERE user_id = $our_user_id
并使用:JOIN语法。
(顺便说一句,更好地学习PDO)