是的,我正在为我们的一个应用程序开发位置搜索元素,但我陷入困境。
我们的数据库中有四个不同的行。地址、城市、州和邮政编码。因此,当用户添加地址时,它将使用其中的一、两、三或四行进行搜索。
即
搜索 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/