2013-10-15 87 views
0

我正在做一个实践项目,建立一个基本的社交网络。我有一个包含用户ID,姓名,姓氏和朋友列的表格,其中包含所有其他用户的ID号码,他们都是朋友。例如。 3“唐纳德”“鸭子”“4,5,23,42”。
下面的作品,如果我知道的值:PHP MySQL搜索数据中的数据

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注入的影响(因为“querys”是fr om用户搜索),但没有正确理解,但这样的帮助也会很好。谢谢!

回答

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)

+1

这是为了做到这一点(和别人谁是刚学SQL我自己,我也觉得超沮丧的是SQL不支持列表)。我第二次学习PDO。你可以在这里阅读 - http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/ –