2013-10-15 125 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/ –