问题描述
|
我不太擅长sql,并且有一个为网站创建的简单邮政编码查找器。 sql如下:
$query = \"select * from zipcodes2 where ZipCode like \\\"%$trimmed%\\\"
* \\\“%$ trimmed%*当然是用户输入的实际邮政编码。它很好用,但是现在我想通过允许用户搜索城市或州而不仅仅是邮政编码来使它更加先进。我已经有了创建的列分别命名为\“ City \”和\“ State \”。我应该在sql行中确切输入什么?我是否需要更改代码的其他任何部分,特别是\\\“%$ trimmed %\\部分?
解决方法
这不是一个好方法,但是您可以通过以下方法接近您想要的:
$query = \"select * from zipcodes2 where ZipCode like \'%$trimmed%\' or (CONCAT(City,\',State) = \'$trimmed\')\"
但是您必须确保用户的响应没有空格,所以它的显示为Chicago,IL
,而不是Chicago,IL
或Chicago,IL
。
您可以通过在查询之前添加以下内容来实现:
$trimmed = preg_replace( \'/\\s+/\',\' \',$trimmed );
, 您可以尝试这样的事情:
select *
from zipcodes2
where
(
ZipCode like \'%$trimmed%\'
OR City like \'%City%\'
OR State like \'%State%\'
)
, 您应该能够通过将SQL查询修改为以下内容来完成:
SELECT * FROM zipcodes2,其中ZipCode喜欢\\\“%$ trimmed%\\\”或(状态= \\\“ $ state_vairable \\\” AND City = \\\“ $ city_variable \\\”)
当然,这取决于您的最终目标。如果您要在明确的城市/州组合上进行匹配,则上述方法适用。
如果希望人们能够找到美国所有称为“ townsville”的地方的邮政编码,请删除括号并将“ AND”更改为“ OR”。