1

我正在尝试在 PHP 中创建一个小脚本来从 MySQL 数据库中获取数据。在我的数据库中,“公司”是一个名为“类别”的列,我将公司的类别存储在其中。例如“1 | 2”或只是“2”。

现在我想搜索“2”,我的数据库将返回这两个带有“1|2”和“2”的条目——但这是我的问题。我用 LIKE % 等进行了尝试,但没有像我希望的那样工作。

有人可以帮我解决我的小型 PHP 脚本吗?

4

5 回答 5

2

我认为以您的方式存储类别是一个坏主意。如果您使用LIKE "%2"or LIKE "%2%"orLIKE "2"语句来获取属于类别“2”的公司,您将收到具有类别的公司,例如21|12

最好从公司表中删除类别。并添加 2 个新表:category(id, name) 和 company_category(id, compnay_id, category_id)。这就是它必须在 RDMS 中的方式。但是,如果您有重要的论据,为什么要这样做-这就是您的交易。

在此,我建议将类别包装在附加的|-symbol 中以获取|1|2||1|3|23|使用LIKE "%|2|%"语句。

我希望这可以帮助你。

于 2012-10-15T11:23:01.463 回答
-1
SELECT * FROM cat_baza WHERE subsection = ".$row['id']." or subsection LIKE('%|".$row['id']."|%') or subsection LIKE('".$row['id']."|%') or subsection LIKE('%|".$row['id']."');
于 2012-10-15T10:58:56.100 回答
-1

尝试

SELECT * FROM table
WHERE category LIKE %2% AND NOT LIKE '%|%'
于 2012-10-15T11:02:17.107 回答
-1

尝试这个

SELECT * FROM table 
WHERE category='2' OR category LIKE '%|2' OR category LIKE '2|%' 
于 2012-10-15T11:09:28.027 回答
-1
SELECT * FROM table 
WHERE category REGEXP '.*2.*'

正则表达式应该工作

于 2012-10-15T11:19:44.063 回答