【问题标题】:MySQL PDO query LIKE with PIPESMySQL PDO 查询 LIKE 与 PIPES
【发布时间】:2023-03-26 10:04:01
【问题描述】:

我有一个 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',但我很困惑为什么它需要高于零?再次感谢!

【问题讨论】:

  • REGEXP 可以在这里工作。
  • tablereserved word 并且应该设置在反引号内。如果这实际上是您正在使用的代码。
  • 不只是使用表格来了解我想要做什么。似乎 find in set 不喜欢我的桌子。
  • @user2787636 好的,只是确保 ;-)

标签: php mysql pdo pipe sql-like


【解决方案1】:

您可以使用FIND_IN_SET()

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

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

【讨论】:

  • 哇 - 3 分钟内回复!论坛现在已经死了 - 我转换为 stackoverflow :)
猜你喜欢
  • 2010-12-19
  • 2017-08-13
  • 2011-10-04
  • 2012-06-19
  • 2015-05-26
  • 2012-08-17
相关资源
最近更新 更多