对于令人困惑的标题感到抱歉,我是新手,不知道该怎么称呼我的问题。 我正在建立(井......)以创建商业列表网站,我找到了这个搜索脚本,它从表中获取结果。所以,我粘贴了它,尝试了它并且它可以工作,但是一次只搜索一个字段,我不能同时搜索两个字段。仅来自字段的数据:“company_name”被重新调整。但是,我需要使其灵活,并将其附加到字段名称'类别'进行搜索,所以,总之我需要PHP搜索两行,即 'company_name'& '类别'字段。
这是脚本,我不知道如何添加其他语法。
$keywords = preg_split('/[\s]+/',$keywords);
$total_keywords = count($keywords);
foreach($keywords as $key=>$keyword) {
$where .= "`company_name` LIKE '%$keyword%' ";
if($key != ($total_keywords - 1)) {
$where .= " AND ";
}
问题出在此处:$where .= "
company_name LIKE '%$keyword%' ";
如果你需要在这里查看整个脚本,那就是。
function search_clients($keywords){
$returned_results = array();
$where = "";
$keywords = preg_split('/[\s]+/',$keywords);
$total_keywords = count($keywords);
foreach($keywords as $key=>$keyword) {
$where .= "`company_name` LIKE '%$keyword%' ";
if($key != ($total_keywords - 1)) {
$where .= " AND ";
}
}
$results = "SELECT `company_name`, LEFT(`company_details`,150)
as `company_details`, `category` FROM `clients`
WHERE $where";
$results_num = ($results = mysql_query($results)) ? mysql_num_rows($results) : 0 ;
if($results_num === 0) {
return false;
} else {
while($results_row = mysql_fetch_assoc($results)) {
$returned_results[] = array(
'company_name' => $results_row['company_name'],
'company_details' => $results_row['company_details'],
);
}
return $returned_results;
}
}
答案 0 :(得分:1)
这是用PHP编写的吗?你也连接什么类型的数据库?这些信息会有所帮助!有时不同的数据库可以挑剔查询的结构!
再好不过,试试这段代码,看看它是否能产生预期效果:
foreach($keywords as $key=>$keyword) {
$where .= "( `company_name` LIKE '%$keyword%' "
. " OR `categories` LIKE '%$keyword%' )";
if($key != ($total_keywords - 1)) {
$where .= " AND ";
}
}
答案 1 :(得分:1)
你可以在这种情况下使用带有括号的OR
$where .= "(`company_name` LIKE '%$keyword%' OR `category` LIKE '%$keyword%') ";