Php 使用数组与数组比较时如何选择数据库MySQL?

Php 使用数组与数组比较时如何选择数据库MySQL?,php,mysql,Php,Mysql,使用数组与数组比较时如何选择数据库MySQL $num = array("1","6","20"); 表:测试数据库 ___________________________ | id | number | | 1 | "1","2","3","4","5" | | 2 | "7","8","9" | | 3 | "10","20","30" | | 4 | "6","8","20" | 我想从表中选择数据:

使用数组与数组比较时如何选择数据库MySQL

$num = array("1","6","20");
表:测试数据库

 ___________________________
| id |       number         |
| 1  | "1","2","3","4","5"  |
| 2  | "7","8","9"          |
| 3  | "10","20","30"       |
| 4  | "6","8","20"         |
我想从表中选择数据:test_db like

完成后,我将得到结果id 1、3和4

因为在id 1中有1 在id 3中有20个 在id 4中有6和20

如何从数据库中进行选择


谢谢。

您的数据库模式非常糟糕,此外,您正在使用双引号保存逗号分隔的值。您应该规范化该表并使其成为一对多关系。但是,在当前情况下,您需要动态生成查询,因为find_in_set只能用于搜索集合中的一个值。这里有一个你可以尝试的方法

$num = array("1","6","20");

$qry = "select * from test_db";
$i = 1 ;
if(is_array($num) && count($num) > 0 ){
    $qry .= " where ";
    foreach($num as $num){
        if($i == 1 ){
            $qry .= " find_in_set(".$num.",replace(number,'\"','') ) ";
        }else{
            $qry .= " OR find_in_set(".$num.",replace(number,'\"','') ) ";
        }
        $i++;
    }
}


// Finally execute the query in variable $qry

测试数据库选项卡中数字的数据类型是什么?--teo列数字类型textfind\u in\u set只能用于搜索一个字符串而不是数组。您可以使用输入数组值生成动态查询以实现它。了解数据库规范化。这正是为什么不在单个列中存储数组的原因。在这里,两个表之间应该有一对多的关系。谢谢,我将进行测试,然后我会回来告诉您发生了什么。
$num = array("1","6","20");

$qry = "select * from test_db";
$i = 1 ;
if(is_array($num) && count($num) > 0 ){
    $qry .= " where ";
    foreach($num as $num){
        if($i == 1 ){
            $qry .= " find_in_set(".$num.",replace(number,'\"','') ) ";
        }else{
            $qry .= " OR find_in_set(".$num.",replace(number,'\"','') ) ";
        }
        $i++;
    }
}


// Finally execute the query in variable $qry