2012-10-22 170 views
-1

我的網站上的用戶可以添加他們的朋友。我試圖這樣做的方式是當他們添加一個新朋友它更新「朋友」列,所以..如果用戶「鮑比」有朋友名爲湯姆和喬已經和他們想添加另一個朋友「鮑勃」它會更新列,所以它現在看起來像「湯姆,喬,鮑勃,等等..」所以..我的問題是這些朋友中的每一個都有一個表中的數據在一個名爲items與他們的信息時代,城市等..當鮑比擊中按鈕「show()」我需要它來檢索每個在「bobby's」朋友列中的朋友和他們的信息。所以這就是我所處的位置。需要幫助sql「LIKE」運算符

$show = mysql_query("SELECT `friends` FROM `Friends` WHERE`Username`='".$_SESSION['Username']."' ") or die(mysql_error()); 
$showw = mysql_fetch_object($show) or die(mysql_error()); 
$yup = mysql_query("SELECT * FROM `items` WHERE Username LIKE '%".($showw->friends)."%' ") or die(mysql_error()); 

它不會返回任何數據,因爲我無法弄清楚它通過那麼名稱進行排序的方式。我可以告訴它在每個逗號後面得到每個名字嗎?

+0

你也許應該對用戶的朋友關係,一個單獨的表。 – sachleen

+1

標準化您的數據庫,以便爲關係創建一個新表。這應該在您的數據庫教科書的相當早的時候被覆蓋。 –

+0

對不起,爲了混淆。我有2個用戶分開的表。我有一個名爲成員的表,它存儲了所有一旦註冊的信息,然後我創建了具有行用戶名和朋友的表朋友。我有點新鮮的PHP和SQL抱歉。我試圖做盡可能多的研究,當我像這樣難倒.. – user1764058

回答

1

首先,你應該有一個單獨的表來映射到一個特定的用戶的朋友。如果按照現在的方式繼續操作,將會遇到很多複雜情況。

無論如何,即使不建議這樣做,你的情況,

$show = mysql_query("SELECT `friends` FROM `Friends` WHERE`Username`='".$_SESSION['Username']."' ") or die(mysql_error()); 
$showw = mysql_fetch_object($show) or die(mysql_error()); 

$friends = "'" . str_replace(", ", "', '", $showw->friends) . "'"; 
$yup = mysql_query("SELECT * FROM `items` WHERE Username IN (". $friends .") ") or die(mysql_error()); 

IN將篩選匹配所有的逗號分隔值。

PS:請考慮使用PDO或mysql_*功能越來越過時,在未來發行任何其他數據庫庫:)

+0

這隻會讓事情變得更糟!現在你的字符串包含的數據被注入到一個字符串上下文之外,這有點危險。你可能需要注入新的引號,以使其無論如何工作。 –

+0

所以是他們不同的方式,我應該插入名稱到朋友列。爲了使它更安全/合乎邏輯? – user1764058

+0

我編輯了我的答案。現在檢查。 – blackpla9ue