gpt4 book ai didi

php - 在 PHP 中对逗号分隔值列表运行选择

转载 作者:可可西里 更新时间:2023-11-01 06:55:56 27 4
gpt4 key购买 nike

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

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 类发送和接收的内容是否太重要了,但如果您想知道,它只是一个运行所有相关位并返回结果数组的简单脚本。目前它没有返回任何内容,因为它没有找到匹配

提前感谢您能告诉我的任何事情。

干杯-戴夫

最佳答案

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

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

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

关于php - 在 PHP 中对逗号分隔值列表运行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com