php - 如果变量并不总是有值,如何查询数据库

标签 php mysql geocoding

是的,我正在为我们的一个应用程序开发位置搜索元素,但我陷入困境。

我们的数据库中有四个不同的行。地址、城市、州和邮政编码。因此,当用户添加地址时,它将使用其中的一、两、三或四行进行搜索。

搜索 1: Fratton Road, Portsmouth, Endland, PO1 3NP
搜索 2:英格兰
搜索 3:英格兰利物浦

我们目前将搜索词分为四个元素,与上面所述相同,它们是 $address、$city、$state、$zip。

因此,搜索 IF 所有四个变量都有值的简单查询是:

$stmt = $conn->prepare("SELECT id FROM activity WHERE (address=?) AND (city=?) AND (state=?) AND (zip=?)");
$stmt->bind_param("s", $array['address'], $array['city'], $array['state'], $array['zip']);
$stmt->execute();

但是当它们不都具有值(value)时我该怎么办?如果搜索词只有“英格兰”或“利物浦英格兰”怎么办? ZIP 和地址行没有值,因此会导致错误。

我应该对四个元素中的每一个进行查询吗?获取地址、城市、州和邮政编码的 ID,然后删除任何重复项?或者有更好的办法吗?

为阅读干杯。

最佳答案

我过去使用过的一种这样的方法是有条件地在 where 子句中......类似于

where ( addressparm = '' OR table.address = addressParm )
  AND ( cityparm = '' or table.city = cityparm )
  AND ( stateparm = '' or table.state = stateparm )

然后您的查询保持不变,并将忽略那些没有提供值的查询,但正如 tadman 指出的那样,由于您是动态构建查询,因此您可能只需在可用时添加它们。

关于php - 如果变量并不总是有值,如何查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317008/

相关文章:

php - 最有效的数据收集方式?

php - 来自数据库的谱系/家谱图

java - 如何从 GpsDirectory 获取经纬度的实际值?

jquery - 黑暗天空预报 API 不返回数据?

php - 自定义配置文件 - Codeigniter

php - COALESCE 不适用于 CodeIgniter

php - 如何检查用户是否已登录 php?

java - MySql 表列中未设置默认值

php - 日期时间 VS 时间戳性能

api - 谷歌地理编码组件两个国家