Php 类似管道的MySQL PDO查询

Php 类似管道的MySQL PDO查询,php,mysql,pdo,pipe,sql-like,Php,Mysql,Pdo,Pipe,Sql Like,我有一个PDO语句,用来查找周围有管道的数据,我在一列中存储了多个id。我知道这不是很好,但它似乎是存储数据的合乎逻辑的方式 列内容示例| 1 | 3 | 4 | 5 | 14 | 76| 所以我想找到数据库中的每一行,其中有3行。我使用php表单发布或获取3 $getthis = $_GET['getthis']; $sql = "SELECT * FROM table WHERE types LIKE '?' ORDER BY name"; $q = $conn-&g

我有一个PDO语句,用来查找周围有管道的数据,我在一列中存储了多个id。我知道这不是很好,但它似乎是存储数据的合乎逻辑的方式

列内容示例| 1 | 3 | 4 | 5 | 14 | 76|

所以我想找到数据库中的每一行,其中有3行。我使用php表单发布或获取3

    $getthis = $_GET['getthis'];
    $sql = "SELECT * FROM table WHERE types LIKE '?' ORDER BY name";
    $q = $conn->prepare($sql);
    $q->execute('%|$getthis|%');
    while ($data = $q->fetch()) { do something }
这不好,我尝试过各种方法,但每次都失败得很惨

感谢您的帮助,提前和伟大的网站的方式!它帮了我很多忙

编辑-谢谢你的帮助,我不能真正改变结构,除非我限制一个项目应该在子类别的数量。因为这是本专栏所包含的内容(所以袜子可能位于footware[1]和footprotectors[4]之下,可能还有20个子类别

我会尝试“在集合中查找”这种方法,但我不明白为什么它需要高于零??再次感谢!

您可以使用


但是你真的应该改变数据库结构!
REGEXP
可以在这里工作。
table
是一个表,应该在backticks中设置。如果这是你正在使用的代码。不只是用table来说明我想做什么。似乎set中的find不喜欢我的表。@user2787636好的,只是确定一下;-)哇-3分钟内回复!论坛现在死了-Im转换为stackoverflow:)
SELECT * FROM table 
WHERE find_in_set('$getthis', replace(types, '|', ',')) > 0
ORDER BY name