Jump to content

Query Multiple Fields with Multiple Keywords


barkster

Recommended Posts

I need to query all the fields in the table for multiple keywords.  For instance I need to query for "white river" but white and river can be in any of the fields.  How can I do this?  I'm pretty close here but not exactly right. 

 

function queryall($table, $keyword) {
	$result = mysql_list_fields($this->db,$table); 
	$sql = "SELECT * FROM ".$table." WHERE "; 
	$keywords = explode(' ', $keyword);
	foreach ($keywords as $kw) {
		for($i = 0; $i < mysql_num_fields($result); $i++){ 
			if($i!=0) {		
					$kw = get_magic_quotes_gpc() ? trim($kw) : addslashes(trim($kw));
					$where[] = mysql_field_name($result,$i)." LIKE '%$kw%'"; 
				}
		}
		$whereclause[] = join(" \nOR ", $where); 
	}
	$sql = $sql . join(" \nAND ", $whereclause); 
	return $sql;
   }

Hi

 

Quick play and I think something like this will so it:-

<?php

function queryall($table, $keyword) 
{
$where = array();
$whereclause = array();
$result = mysql_list_fields($this->db,$table); 
$sql = "SELECT * FROM ".$table." WHERE "; 
$keywords = explode(' ', $keyword);
foreach ($keywords as $kw) 
{
	$kw = get_magic_quotes_gpc() ? trim($kw) : addslashes(trim($kw));
	for($i = 0; $i < mysql_num_fields($result); $i++)
	{ 
		if($i!=0) 
		{		
			$where[] = mysql_field_name($result,$i)." LIKE '%$kw%'"; 
		}
	}
	$whereclause[] = "(".implode(" \nOR ", $where).")"; 
	$where = array();
}
$sql = $sql . implode(" \nAND ", $whereclause); 
return $sql;
}

?>

 

This is checking for ALL key words in any field.

 

All the best

 

Keith

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.