使用php数组搜索sql db中用逗号分隔的列

iyfjxgzm  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(418)

我的数据库中有一列标记为providers。此列可以有多个值,即(1、2、3、4、5)或(14、2、9、87)。我有一个数组,其中也填充了类似的值,即(1,9,7,3)等等。
我试图查询我的数据库并从表中返回结果,其中变量数组中的任何值都与列中用逗号分隔的值匹配。
这就是我所拥有的。 $variable = "1,9,3,4"; $sql = "SELECT id, provider FROM table_name WHERE FIND_IN_SET(provider, '$variable')"; 然而,这是行不通的。如果db中的列有多个值,则返回nothing。如果列只有一个值,它将返回一个值。

2admgd59

2admgd591#

我不确定,但我可以解决你的问题。例子:

$sql = "SELECT id, provider FROM table_name WHERE LOCATE('$variable', provider) = 1;";

但如果ID的顺序不同,则不起作用。

ttp71kqs

ttp71kqs2#

csv应该是 find_in_set . 第一个应该是要搜索的单个值。所以你应该分开 $variable 转换为多个值。像这样:

$variable = "1,9,3,4";
$values = str_getcsv($variable);
foreach($values as $value) {
    $sql = "SELECT id, provider FROM table_name WHERE FIND_IN_SET($value, provider)";
    //execute $sql here
}

我应该这么做。
你以前的做法 find_in_set 我在找 1,9,3,4 ,不是 1 , 9 , 3 ,或 4 如你所愿。手册还说明了使用该函数的行为不会起作用。
如果第一个参数包含逗号(,)字符,则此函数无法正常工作。
您应该在将来有时间时更新该表,使其正常化。

相关问题