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

时间:2015-03-02 07:15:52

标签: php mysql

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

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

表:test_db

 ___________________________
| id |       number         |
| 1  | "1","2","3","4","5"  |
| 2  | "7","8","9"          |
| 3  | "10","20","30"       |
| 4  | "6","8","20"         |

我想从表中选择数据:test_db喜欢

select * From test_db WHERE find_in_set($num, number)......

完成后,我会得到结果ID 134

因为在id 1中有"1" 并且在身份3中有"20" 并且在ID 4中有"6""20"

如何从数据库中选择。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的数据库架构非常糟糕,另外您使用双引号保存逗号分隔值。您应该规范化表并使其成为一对多关系。但是,在当前情况下,您需要动态生成查询,因为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