Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 mysql查询数组参数_Php_Mysql - Fatal编程技术网

Php mysql查询数组参数

Php mysql查询数组参数,php,mysql,Php,Mysql,我有一个简单的数组: company company_to_attributes ===================== ============================ | id_company | name id_attributes | id_company ===================== ============================ | 1 | Test

我有一个简单的数组:

company                    company_to_attributes
=====================      ============================
| id_company | name        id_attributes | id_company
=====================      ============================
| 1          | Test        | 1           | 1             
| 2          | Test 2      | 2           | 1              
| 3          | Test 3      | 3           | 1         
| 4          | Test 4      | 4           | 3
| ..         | ...         | ..          | ... 
=====================      ============================
我想写一个查询,从数组中获取具有id_属性的公司。

试试这个

$array_attributes_IDS = array(1,2);
SELECT c.* FROM company c INNER JOIN company_to_attributes ca ON c.id_company=ca.id_company WHERE ca.id_attributes IN (1,2)

这将只返回一个company
TEST
,因为它同时包含两个属性。

请尝试以下操作:

$array_attributes_IDS = array(1,2);
$finalArray = implode(',', $array_attributes_IDS);
$arrCount = count($array_attributes_IDS);

$query ="    SELECT com.name
             FROM   company com
             INNER JOIN company_to_attributes att
                ON com.id_company = att.id_company
             WHERE  att.id_attributes IN ($finalArray)
             GROUP  BY com.name
             HAVING COUNT(*) = $arrCount";

希望这会有所帮助。

请举例说明你想做什么以及结果应该是什么。Thk作为答案。我会选择所有具有所有数组属性值的公司。如果具有all值。@迈克:通过内部联接,您将获得与至少1个属性关联的所有公司。我希望这就是你想要的。或者您想要所有的组件,即使它不与任何属性关联?请解释香港的答复。查询工作正常,但我的数组是动态的,我不知道包含多少元素。如何解决查询计数?这太完美了!非常感谢你。
    $array_attributes_IDS = array(1,2);
    $finalArray = implode(',', $array_attributes_IDS);
    $query = "SELECT C.name FROM company_to_attributes CA INNER JOIN company C ON CA.id_company = C.id_company WHERE CA.id_attributes IN ($finalArray)";
SELECT  c.name
FROM    company c
       JOIN company_to_attributes a
            ON c.id_company = a.id_company
WHERE   a.id_attributes IN (1,2)
$sql = "
SELECT t1.name FROM company_to_attributes
LEFT JOIN company AS t1 ON t1.id_company = company_to_attributes.id_company
WHERE company_to_attributes.id_attributes IN (".implode(',', $array_attributes_IDS).")
";
"SELECT c.name from company c inner join  company_to_attributes cta ON cta.id_company = c.id_company WHERE   cta.id_attributes IN (1,2);"