我有一个以下风格的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>
感谢您的帮助!
答案 0 :(得分:2)
我希望我已经理解了这个问题。
您可以执行string comparisons o regex match,但我认为这不是最佳方式
最好的方法是创建支持表“标签”并创建关系n - &gt; n与原始表格。
答案 1 :(得分:0)
轻度测试
那么,我是否理解你有一个包含列的数据库设置,其中有一个标签列?
如果是这样,那么是的,您确实可以使用RLIKE命令搜索它们(我确信其他许多命令)
SELECT * FROM subs WHERE tags RLIKE 'PC'
应该这样做。记得逃避输入的数据。也许在PhpBB中制作一种request_var函数会对你有所帮助吗?