-1

我有一个 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 }

它不好,我尝试了各种方法来做到这一点,但我每次都失败了。

顺便感谢您的帮助和很棒的网站!它帮助我加载

编辑 - 感谢您的帮助,除非我限制一个项目应该属于的子类别的数量,否则我无法真正改变结构。因为这就是本专栏所包含的内容(所以袜子可能在鞋类 [1] 和护脚器 [4] 以及可能的 20 个其他子猫之下

我会尝试这种方法'find_in_set',但我很困惑为什么它需要高于零?再次感谢!

4

1 回答 1

1

您可以使用FIND_IN_SET()

SELECT * FROM table 
WHERE find_in_set('$getthis', replace(types, '|', ',')) > 0
ORDER BY name

但是你真的应该改变数据库结构!

于 2013-09-17T12:52:29.217 回答