使用REGEXP搜索三个字段并避免空子字符串错误

时间:2013-05-27 06:41:09

标签: php mysql regex

我有一个搜索数据库字段'name'和'address'的搜索表单,以及一个搜索数据库字段'type'的下拉列表,并在search_results.php页面中显示结果。我的基本目标是搜索“dune”的名称和地址字段,并将结果与​​任何包含“dune”的单词匹配,例如搜索“dune”返回结果,例如'binedune', 'countdune','sanddune'等。

此外,如果搜索返回空结果,尤其是在使用下拉列表时,我不希望出现“空子字符串”错误。例如,数据库中“标记”表的“类型”列包含“纽约”,“慕尼黑”,“伦敦”和“内罗毕”字段。除了“新泽西”,“开罗”等其他城市之外,这与下拉列表中显示的列表选项相同。例如,当我选择“开罗”时,它会在数据库中进行搜索,但找不到开罗并返回错误'Got error empty(sub)expression'。

这是我到目前为止所做的:

页面名称:search_results.php

<?PHP
//include db connection and functions file
require_once("lib/db.php");
require_once("lib/functions.php");

//Get POST vars from search form and drop down list

$name = "";
if(!empty($_POST['name'])){
    $name = mysql_real_escape_string(trim($_POST['name']));
}

if(!empty($_POST['address'])){
    $address = mysql_real_escape_string(trim($_POST['address']));
}

$type = "";
if(!empty($_POST['type'])){
    $type = mysql_real_escape_string(trim($_POST['type']));
}

//search form here. It redirects to this page, same as the drop down list which uses javascript to post vars to this same page

//This is the SQL query that is giving me the nightmares

$query="SELECT * FROM markers WHERE name REGEXP '^(".$name.")' OR address REGEXP '^(".$address.")' OR type REGEXP '^(".$type.")' AND active = 1";

$result=mysql_query($query) or die(mysql_error());
//display results here

问题是如果数据库中没有与'type'匹配,我得到错误Got error'empty(sub)表达式。任何帮助将不胜感激

0 个答案:

没有答案