我正在尝试在PHP中创建一个小脚本来从MySQL数据库中获取数据。 在我的数据库中,“公司”是一个名为category的列,我将公司的类别存储在其中。例如“1 | 2”或“2”。
现在我想搜索“2”,我的数据库将返回带有“1 | 2”和“2”的两个条目 - 但这是我的问题。 我用LIKE%等尝试过,但没有像我希望的那样有效。
有没有人可以帮我解决我的小PHP脚本?
答案 0 :(得分:2)
我认为以你的方式存储类别是一个坏主意。
如果您使用LIKE "%2"
或LIKE "%2%"
或LIKE "2"
语句来获取属于“2”类别的广告,您将收到包含类别的公司,例如21|12
。
最好从公司表中删除类别。并添加2个新表:category(id,name)和company_category(id,compnay_id,category_id)。这就是它在RDMS中的必要性。 但是,如果你有重要的论据,为什么你这样做 - 这是你的交易。
在此我建议用其他|
- 符号包装类别以获取|1|2|
或|1|3|23|
并使用LIKE "%|2|%"
语句。
我希望这会对你有所帮助。
答案 1 :(得分:-1)
SELECT * FROM cat_baza WHERE subsection = ".$row['id']." or subsection LIKE('%|".$row['id']."|%') or subsection LIKE('".$row['id']."|%') or subsection LIKE('%|".$row['id']."');
答案 2 :(得分:-1)
尝试
SELECT * FROM table
WHERE category LIKE %2% AND NOT LIKE '%|%'
答案 3 :(得分:-1)
试试这个
SELECT * FROM table
WHERE category='2' OR category LIKE '%|2' OR category LIKE '2|%'
答案 4 :(得分:-1)
SELECT * FROM table
WHERE category REGEXP '.*2.*'
正则表达式应该工作