0

我有一个以下样式的 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>
4

2 回答 2

2

您可以执行字符串比较oa regex match,但我认为这不是最好的方法

最好的方法是创建一个支持表“标签”并与原始表创建关系 n -> n。

于 2013-11-01T01:06:15.840 回答
0

轻微测试

那么,我是否理解您有一个带有列的数据库设置,其中有一种标签列?

好吧,如果是这样,那么是的,您确实可以使用 RLIKE 命令搜索它们(我敢肯定还有许多其他命令)

SELECT * FROM subs WHERE tags RLIKE 'PC'

那应该这样做。请记住转义正在输入的数据。也许在 PhpBB 中制作一种 request_var 函数会对您有所帮助?

于 2013-11-01T01:03:11.067 回答