Php 取决于数据是否存在的条件SQL

Php 取决于数据是否存在的条件SQL,php,mysql,sql,Php,Mysql,Sql,是否可以有如下条件SQL查询: 我有一个表单,它要求输入一个最大值、一个最小值(都是必需的值),然后选择输入1、2或3个不同的邮政编码 如果只输入了1个邮政编码,我希望只使用一个邮政编码查询数据库,如下所示: SELECT * FROM first_page_data WHERE value_min > 1 AND value_max < 5 AND postcode1 < <<geocode formula here>> 从第一页数据中选择* 值_m

是否可以有如下条件SQL查询:

我有一个表单,它要求输入一个最大值、一个最小值(都是必需的值),然后选择输入1、2或3个不同的邮政编码

如果只输入了1个邮政编码,我希望只使用一个邮政编码查询数据库,如下所示:

SELECT * FROM first_page_data WHERE
value_min > 1
AND
value_max < 5
AND
postcode1 < <<geocode formula here>>
从第一页数据中选择*
值_min>1
和
值_max<5
和
邮政编码1<
但如果输入两个或三个邮政编码,我想将其更改为:

SELECT * FROM first_page_data WHERE
value_min > 1
AND
value_max < 5
AND
(postcode1 < <<geocode formula here>>
OR
postcode2 < <<geocode formula here>>
OR
postcode3 < <<geocode formula here>>)
从第一页数据中选择*
值_min>1
和
值_max<5
和
(邮政编码1<
或
邮政编码2<
或
邮政编码3<)
如果我只使用底部查询,并且没有第二个邮政编码的数据,那么它将返回一个错误。我是否必须使用PHP条件语句手动检查邮政编码,然后使用连接将它们连接到一个查询中,或者在SQL查询中是否有一种聪明的方法来正确执行此操作,这意味着我可以取消条件语句


编辑 为清楚起见,我省略了以下地理编码公式:

((((acos(sin((".$_SESSION['fsea_lat']."*pi()/180)) * sin((`geo_lat1`*pi()/180))+cos((".$_SESSION['fsea_lat']."*pi()/180)) * cos((`geo_lat1`*pi()/180)) * cos(((".$_SESSION['fsea_lon']."- `geo_lon1`)* pi()/180))))*180/pi())*60*1.1515) * (1.609344/1000)) < ".$_SESSION['frange']."
(((((“$”会话['fsea_lat'].*pi()/180))*sin(('geo_lat1`*pi()/180))+cos((“$”会话['fsea_lat'.*pi()/180))*cos('geo_lat1`*pi()/180))*cos(('geo_会话['fsea_lon'.-'geo_lon1`]pi()/180)))*180/pi())*60*1.1515/1000$)
它计算设定点和输入的邮政编码之间的距离,如果该距离小于范围变量frange,则满足条件。如果三个邮政编码中的任何一个满足此公式,我希望查询返回该行


但当然,如果邮政编码2和3中没有数据,公式将尝试使用数据库表中的NULL进行计算,并且(虽然可能不是正式的错误),结果将是错误的

也许可以使用IN结构

postcode1 IN (1,2,3)

你能举一个具体的例子说明你在写什么吗?并包括您看到的特定错误?您可以连接邮政编码并在语法中使用
。或者您可以使用一些条件PHP语句来构建
WHERE
子句。下面的查询“将返回错误”是什么意思?错误是什么?更新了这些评论的问题!