我有一个搜索数据库字段'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)表达式。任何帮助将不胜感激