需要帮助sql“LIKE”运算符

时间:2012-10-22 01:05:51

标签: php mysql

我网站上的用户可以添加他们的朋友。我试图这样做的方式是当他们添加一个新朋友它更新“朋友”列所以..如果用户“鲍比”有朋友名为汤姆和乔已经和他们想要添加另一个朋友“鲍勃”它将更新列,所以它现在看起来像“汤姆,乔,鲍勃,等...”所以..我的问题是这些朋友中的每一个都有一个名为items的表中的数据,其信息年龄,城市等。当bobby点击“show()”按钮时,我需要它来检索“bobby”朋友栏中的每个朋友的信息。所以这就是我所处的位置。

$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()); 

它不会返回任何数据,因为我无法找到一种方法来对它进行排序。我可以告诉它在每个逗号后得到每个名字吗?

1 个答案:

答案 0 :(得分: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_*函数在下一版本中被弃用:)