Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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_Sql_Arrays - Fatal编程技术网

Php mysql在阵列中的位置

Php mysql在阵列中的位置,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,嗨,我有下面的mysql查询,当我尝试使用数组添加WHERE子句时,它会中断。我认为它的顺序是正确的,但不确定我是否对这里的符号或某事有错误。我可以验证$company_type是否有数据并且是一个数组,但是当我可以验证是否有数据时,SQL语句不会返回任何结果 谢谢 "SELECT *, ( 6371 * acos( cos(radians($lat)) * cos(radians(l.location_latitude)) * cos(radia

嗨,我有下面的mysql查询,当我尝试使用数组添加WHERE子句时,它会中断。我认为它的顺序是正确的,但不确定我是否对这里的符号或某事有错误。我可以验证$company_type是否有数据并且是一个数组,但是当我可以验证是否有数据时,SQL语句不会返回任何结果

谢谢

"SELECT *,
         ( 6371 * acos( 
     cos(radians($lat)) * cos(radians(l.location_latitude)) * 
        cos(radians(l.location_longitude) - radians($lng)) + 
     sin(radians($lat)) * sin(radians(l.location_latitude)) 
    ) ) AS distance 
            FROM
        company c
            INNER JOIN
        bcompanytocompany bc
            ON c.company_id=bc.company_id
            INNER JOIN
        lcompany_types ct
            ON bc.company_type_id=ct.company_type_id
            INNER JOIN
        bcompanytolocations bcl
            ON c.company_id = bcl.company_id
            INNER JOIN
        address a
            ON bcl.address_id = a.address_id
            INNER JOIN
        location l
            ON a.address_location_id = l.location_id
            INNER JOIN
        postal_codes po
            ON a.address_postal_id = po.postal_id
            INNER JOIN
        cities ci
            ON po.city_id = ci.city_id
            INNER JOIN
        lprovinces pr
            ON ci.province_id = pr.province_id
        WHERE company_type_name 
            IN (".implode(',',$company_type).")
        HAVING distance < $setdistance
        ORDER BY distance
        LIMIT 30"
“选择*,
(6371*acos(
cos(弧度($lat))*cos(弧度(l.位置和纬度))*
cos(弧度(左位置经度)-弧度($lng))+
sin(弧度($lat))*sin(弧度(l.位置\纬度))
))作为距离
从…起
c公司
内连接
B公司到B公司
在c.company\u id=bc.company\u id上
内连接
L公司类型ct
在bc.company\u type\u id=ct.company\u type\u id上
内连接
B公司地址
在c.company\u id=bcl.company\u id上
内连接
致辞
在bcl.address\u id=a.address\u id上
内连接
位置l
在a.address\u location\u id=l.location\u id上
内连接
邮政编码
在a.address\u postal\u id=po.postal\u id上
内连接
城市词
ON po.city\U id=ci.city\U id
内连接
省府公共关系
关于ci.province\u id=pr.province\u id
其中公司\键入\名称
在(“.内爆(',',$company_类型)。”
距离小于或等于设定距离的
按距离排序
限制30“

由于
$company\u type
包含字符串值,如果希望在()中使用
,则需要将其括在引号中。

您还可以使用
FIND_IN_SET()
,这是一个字符串,包含由逗号分隔的值:

WHERE FIND_IN_SET(company_type_name, '".implode(',',$company_type)."')
-- FIND_IN_SET(company_type_name, 'string1,string2')

因为我相信
公司类型\u名称
包含字符串,所以字符串缺少
。你会得到这样的结果:

IN (name1, name2, [...])
而不是

IN ('name1', 'name2', [...])
只需修复PHP
内爆()
即可添加字符串:

WHERE company_type_name 
        IN ('".implode("','",$company_type)."')

$company\u type
中的值是什么类型的?串?整数?$company\u类型字符串
WHERE company_type_name 
        IN ('".implode("','",$company_type)."')