从表单输入中搜索SQL中的部分变量

时间:2012-08-21 06:03:25

标签: php mysql

我现在正在进行一项任务,我正在尝试建立一个小型房地产,例如基于用户输入城市从我的mySQL数据库构建搜索的网站。我现在正在根据用户是否完全正确地输入城市来回馈正确的结果,但是如果用户只是进入城市的一部分,我希望它能够返回搜索结果。

一个例子是,任务中的一些城市是“Tomsville”和“OceanCove”我需要能够让搜索能够返回“Tomsville”的结果,如果有人只是输入“Tom”或甚至“T”......对于“OceanCove”来说也是如此,他们可以输入“海洋”并获得结果。

用户输入的变量是$ findhome。

以下是我的代码中与此问题相关的部分:

 $statement  = "SELECT *";
 $statement .= "FROM u1585_homes ";

if ($findhome!= 'ALL')
{
    $statement .= "WHERE city ='".$findhome."' ";
}
    $statement .= "ORDER BY city";

    $sqlResults = selectResults($statement);

    $error_or_rows = $sqlResults[0];

    if (substr($error_or_rows, 0 , 5) == 'ERROR')
    {
        print "<br />Error on DB";
        print $error_or_rows;
        } else {

                $arraySize = $error_or_rows;

                for ($i=1; $i <= $error_or_rows; $i++)
                {
                    $image_file = $sqlResults[$i]['image_file'];
                    $city = $sqlResults[$i]['city'];
                    $price = $sqlResults[$i]['price'];
                    $bedrooms= $sqlResults[$i]['bedrooms'];
                    $baths= $sqlResults[$i]['baths'];
                    $footage = $sqlResults[$i]['footage'];
                    $realtor_firstname = $sqlResults[$i]['realtor_firstname'];
                    $realtor_lastname = $sqlResults[$i]['realtor_lastname'];
                    $grabber = $sqlResults[$i]['grabber'];
                    $description = $sqlResults[$i]['description'];

                    print "<p><img src='images/".$image_file."'>";
                    print "<h3>".$grabber."</h3><br />";
                    print "City: ".$city."<br />";
                    print "Bedrooms: ".$bedrooms."<br />";
                    print "Baths: ".$baths."<br />";
                    print "Price: ".$price."<br />";
                    print "Footage: ".$footage."<br />";
                    print "Realtor: $realtor_firstname ".$realtor_lastname."<br />";

                    print "Description: ".$description;
                    //print ""
                }               
        }
    }

2 个答案:

答案 0 :(得分:3)

尝试在搜索字词周围使用%,并使用like代替=作为运营商:

$statement .= "WHERE city like '%".$findhome."%' ";

答案 1 :(得分:0)

使用LIKE运算符

$statement .= "WHERE city LIKE '%".$findhome."%' ";