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

在PHP中对逗号分隔的值列表运行select,php,mysql,select,csv,Php,Mysql,Select,Csv,我在数据库上运行select查询时遇到了一些问题。某些数据以逗号分隔值的列表形式保存,例如: Table: example_tbl | Id | People | Children | | 1 | 1,2,3 | 8,10,3 | | 2 | 7,6,12 | 18,19,2 | 还有一个我正在尝试运行的示例: <?php include 'class.php'; $selection = 1; $db = new DbClass; $tbl_

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

Table: example_tbl
| Id | People | Children |
| 1  | 1,2,3  |  8,10,3  |
| 2  | 7,6,12 |  18,19,2 |
还有一个我正在尝试运行的示例:

<?php
    include 'class.php';
    $selection = 1;
    $db = new DbClass;
    $tbl_name = 'example_tbl';
    $sql = "SELECT * FROM $tbl_name WHERE ".$selection." IN People";
    $result = $db->query($sql);
    $print_r($result);
?>

上面的脚本应该在People列中找到“1”后返回第1行,但显然我把它搞糟了

我遇到的问题是,我认为IN语句是向后的,也就是说,如果$selection是一个逗号分隔(内爆)列表,那么我认为这种方法应该选择值,而不是我尝试使用它的方式

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

提前谢谢你能告诉我的一切

干杯
-Dave

为什么人们坚持在列中使用逗号分隔数据值的疯狂习惯,而不是正确地规范化他们的数据库设计。它总是导致问题

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


不幸的是,这不是我的数据库,我正在一个非常过时的网站上为一家企业做一些工作。但是干杯,这很有魅力。而且速度也非常快;)如果它是一个遗留数据库,那么为我扼杀原始db设计器:)他实际上仍然在那里工作,但他即将退休,我认为他甚至一点也不在乎。但我还是要掐死他!
SELECT * 
  FROM $tbl_name 
 WHERE FIND_IN_SET(".$selection.",People);