如何在MySQL表中搜索项目可搜索的“标签”

时间:2013-11-01 00:47:45

标签: php mysql database

我有一个以下风格的MySQL表:

名称标签 技术PC,电脑,游戏 电脑游戏,键盘,显示器

我想知道是否有可能使这些可搜索。例如,如果有人搜索“PC”,那么技术将成为结果。如果有人搜索“游戏”,那么技术和计算机将成为结果。到目前为止,我的代码如下:

<?php
//Include the connection file
include "subconnect.php";

$sql = "SELECT * FROM subs";



if(isset($_POST['search'])) {

     $search_term = mysql_real_escape_string($_POST['search_box']);


     $sql .= " WHERE tags = '{$search_term}'";

}


$query = mysql_query($sql) or die(mysql_error());

?>

<form name="search_form" method="POST" action="subsearch.php">

   Search: <input type="text" name="search_box" value="" />

   <input type="submit" name="search" value="Enter a category to find Subreddits!">
</form>
<table width="70%" cellpadding="5" cellspace="5">

<tr>
<td><h1>Name</h1></td>

</tr>
<?php while($row = mysql_fetch_array($query)) { ?>
<tr>
<td><?php echo $row['name']; ?></td>
</tr>
<?php } ?>

</table>

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我希望我已经理解了这个问题。

您可以执行string comparisons o regex match,但我认为这不是最佳方式

最好的方法是创建支持表“标签”并创建关系n - &gt; n与原始表格。

答案 1 :(得分:0)

轻度测试

那么,我是否理解你有一个包含列的数据库设置,其中有一个标签列?

如果是这样,那么是的,您确实可以使用RLIKE命令搜索它们(我确信其他许多命令)

SELECT * FROM subs WHERE tags RLIKE 'PC'

应该这样做。记得逃避输入的数据。也许在PhpBB中制作一种request_var函数会对你有所帮助吗?