我的数据库中有一列标记为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。如果列只有一个值,它将返回一个值。
2条答案
按热度按时间2admgd591#
我不确定,但我可以解决你的问题。例子:
但如果ID的顺序不同,则不起作用。
ttp71kqs2#
csv应该是
find_in_set
. 第一个应该是要搜索的单个值。所以你应该分开$variable
转换为多个值。像这样:我应该这么做。
你以前的做法
find_in_set
我在找1,9,3,4
,不是1
,9
,3
,或4
如你所愿。手册还说明了使用该函数的行为不会起作用。如果第一个参数包含逗号(,)字符,则此函数无法正常工作。
您应该在将来有时间时更新该表,使其正常化。