首页 MySql 在PHP中以逗号分隔值列表运行select

在PHP中以逗号分隔值列表运行select

我在数据库上运行select查询时遇到了一些问题.一些数据保存为逗号分隔值列表,例如:Table: example_tbl | Id | People | Children | | 1 | 1,2,3 | 8,10,3 | | 2 | 7,6,12 | 18,19,2 | 我试图运行的一个例子:?php include clas

我在数据库上运行select查询时遇到了一些问题.一些数据保存为逗号分隔值列表,例如:

Table: example_tbl
| Id | People | Children |
| 1  | 1,2,3  |  8,10,3  |
| 2  | 7,6,12 |  18,19,2 |

我试图运行的一个例子:

上面的脚本应该在People列中找到’1’之后返回第1行,但很明显我已将其删除了.

我遇到的问题是我认为我的IN语句是向后的,即我认为如果$selection是逗号分隔(内爆)列表,那么这个方法将是选择值,而不是我试图使用它的方式.

我不知道我从上面的db类发送和接收的内容是否过于重要,但如果您想知道,它只是一个运行所有相关位并返回结果数组的简单脚本.目前它没有返回任何东西,因为它找不到匹配

提前感谢你能告诉我的任何事情.

干杯
戴夫
最佳答案
为什么人们坚持这种疯狂的习惯,即在列中使用逗号分隔的数据值,而不是正确地规范化他们的数据库设计.它总会导致问题.

SELECT * 
  FROM $tbl_name 
 WHERE CONCAT(',',People,') LIKE '%,".$selection.",%'";

要么

SELECT * 
  FROM $tbl_name 
 WHERE FIND_IN_SET(".$selection.",People);

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/shujuku/mysql/20201204/12993.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱xwei067@foxmail.com我们将及时予以处理。

Copygight © 2016-2023 https://www.0532zz.com All Rights Reserved.青岛站长网

站长:xwei067#foxmail.com(请把#换成@)