Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL中的Where条件置换_Php_Sql_Permutation_Comma_Separator - Fatal编程技术网

Php SQL中的Where条件置换

Php SQL中的Where条件置换,php,sql,permutation,comma,separator,Php,Sql,Permutation,Comma,Separator,我想选择那些只包含“1”和“2”以及“1,2”和“2,1”的记录 关于从jarlh 您可以使用列创建新表jobs\u image: id - primary id_job id_image 并选择using join作为示例: SELECT * FROM `jobs` LEFT JOIN `jobs_images` ON (`jobs_images`.`id_job`=`jobs`.`id`) WHERE `jobs_images`.`id_image` IN (1,2,3) 最后,我使用

我想选择那些只包含“1”和“2”以及“1,2”和“2,1”的记录


关于从
jarlh

您可以使用列创建新表
jobs\u image

id - primary
id_job
id_image
并选择using join作为示例:

SELECT * FROM `jobs` LEFT JOIN `jobs_images` ON (`jobs_images`.`id_job`=`jobs`.`id`) 
WHERE `jobs_images`.`id_image` IN (1,2,3)

最后,我使用这段代码进行了查询。我决定按顺序格式在图像字段中存储一个数据

  <?php
    echo "<pre>";
    $str = "1,2,3";
    function getCombinations($array) {
        //initalize array
        $results = [[]];
        //get all combinations
        foreach ($array as $k => $element) {
            foreach ($results as $combination)
                $results[] =  $combination + [$k => $element];
        }
        //return filtered array
        return array_values(array_filter($results));
    }
    $arr = getCombinations(explode(",", $str));
    $lastElement = end($arr);
    foreach($arr as $v){
      $sep=",";
        if($lastElement == $v){
        $sep='';
        }
          $condition .= "'".implode(",", $v)."'".$sep;
    }
    echo $qry = "select * from job_detail where image in (".$condition.")";
?>

试试这个:
图像位于(“1”、“2”、“1,2”、“2,1”)
但是如果我想选择一个包含“1,2,3”的图像,那么我必须写它们的排列。所以我想让它在所有条件下都是动态的。对于字段的未排序逗号分隔值设计,按照Veniamin的建议,对所有组合进行精确匹配是使用索引的唯一方法。我建议你要么规范化你的表,要么在更新/插入时对你的数字进行排序,这样你就可以得到一个精确的匹配项进行搜索。不要将数据存储为逗号分隔的值。。。这只会给你带来很多麻烦。你用的是哪种数据库管理系统?(我同意Joachim和jarlh的观点:不要在一列中存储逗号分隔的值)