Php mysql在阵列中的位置
嗨,我有下面的mysql查询,当我尝试使用数组添加WHERE子句时,它会中断。我认为它的顺序是正确的,但不确定我是否对这里的符号或某事有错误。我可以验证$company_type是否有数据并且是一个数组,但是当我可以验证是否有数据时,SQL语句不会返回任何结果 谢谢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
"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)."')