2016-02-05 100 views
-1

我一直在使用功能LIKE在此声明但其没有做什么,我希望为它做,在我的网站基本上是一个用户有一个subject通常看起来像这样hello welcome to my #room hows it going #fun以及使用什么IM是LIKE函数用于选择包含#funsubject的所有用户,我的声明看起来像这样;LIKE功能SQL

$search = 'fun'; 
$sql = "SELECT * FROM `usr_users` WHERE `subject` LIKE '%$search%'"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_assoc($result)) { 
    echo $row['username']; 
} 

但在查询运行时,它仅在其subject或者根本没有的开头中选择具有乐趣的用户。有没有不同的功能,我可以用它来从subject中选择单词而不仅仅是第一个单词。

+0

Btw Lewis;您正在使用已弃用的MySQL API,它将从未来的PHP版本中删除。如果当你升级到新版本的PHP时,你将不得不重写你的代码。看看这些在比赛之前http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php或http://php.net/pdo.prepared-statements –

回答

5

您还需要一个%在要搜索的字符串开头。

$sql = "SELECT * FROM `usr_users` WHERE `subject` LIKE '%$search%'"; 

--- UPDATE ---

它可能会失败的你,因为你可能需要逃避的数据。根据您的查询检查错误mysql_error()。它可能会给你带来一些东西。 mysql_real_escape_string()。如果它是你实际查询的一部分,那么#可能是罪魁祸首。或者使用htmlspecialchars()或类似的东西来回显查询。

+0

好吧,这不会尽管仍然没有给我我需要的结果,谢谢你的信息。 – Johnny

+1

你确定表中有相关​​匹配吗? –

+2

不是我的dv btw大卫。 @LewisTyler可能会让你失望,因为你可能需要逃避数据。检查你的查询是否有错误'mysql_error()'。它可能会给你带来一些东西。 'mysql_real_escape_string()'。那个'#'可能是罪魁祸首,如果它是你的实际查询的一部分。或者使用'htmlspecialchars()'或类似的东西来回显查询。 –