邮政编码搜索查询以php格式发送到mysql数据库

时间:2013-12-27 05:02:50

标签: php mysql

我是php编程的新手。我已经用

建立了一个mysql数据库
id, 
city,
county, 
state,
zip fields

我的问题是我编写的搜索表单适用于城市和县的查询,但只接受查询中的5个数字中的4个。我研究过,发现什么都没有帮助。我认为这可能是preg_replace()的问题,但在那里没有运气。

我尝试了不同的mysql查询语法,没有运气。

$allowed = "/([0-9]{5})([0-9]{4})/";
$searchquery = preg_replace($allowed, '', $_POST['searchquery']);
if($_POST['filter1'] == "Zip Code"){
$sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";

2 个答案:

答案 0 :(得分:2)

如果您正在尝试处理zip + 4,看起来您在正则表达式中缺少短划线。你的代码也没有多大意义。您不是要替换用户放入的任何内容,而是试图找出他们放入的是否是有效的邮政编码?而不是替换字符串的preg_replace,请尝试使用preg_match,它可以让您知道它们是否放入了有效的邮政编码。

它应该是这样的:

$allowed = "([0-9]{5})-([0-9]{4})";
if($_POST['filter1'] == "Zip Code"){
    if(preg_match($allowed, $_POST['searchquery']))
    {
           $sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";
    }
} 

答案 1 :(得分:0)

看看

$string="tampa, florida, 33616-1701";

preg_match("/([0-9]{5})-([0-9]{4})/",$string,$matches);

var_dump( $matches);

$allowed = "/([0-9]{5})-([0-9]{4})/";
preg_replace($allowed, $_POST['searchquery'],$matches);
$searchquery=$matches[0];
if($_POST['filter1'] == "Zip Code"){
$sqlCommand = "SELECT city, county, zip, state FROM cities_extended WHERE zip LIKE '%$searchquery%' ORDER BY county, city, zip ";