How do I check a part of a record for a string in MySQL not knowing how many words..?

Glenn

Member
How would I search for an unknown number of words. Say a user searches "nike shoe" and the next searches "red nike shoe"?

What I'm trying to do here is create a search after "explode" function. I can't distinguish LIKE $word[1] AND LIKE $word[2] ...etc when I do not know how many words may be entered.
 

conor

New Member
You could use a loop to add to your query, here's an example:

Code:
$query = 'select * from table where field';
$words = explode( ' ', $search );
$count = count( $words );

for( $i = 0; $i < $count; ++$i ){
    $query .= ' like "%' . $words[ $i ] . '%"';
    if( $i != ( $count - 1 ) ) // add and as long as its not the last word
        $query .= ' and';
}

mysql_query( $query );
 

Glenn

Member
Here's what I have.

Code:
$searchwords = $_GET['search'];
echo $searchwords;  // to debug
$word = explode(" ",$searchwords);

$wordnumber = count($word);

$searching = "LIKE '%" . $word[0] . "%'";

if($wordnumber > 1) {
	for($number = 1; $number <= $wordnumber-1; $number++) {
		$searching = $searching . " AND LIKE '%" . $word[$number] . "%'";
		}
	}

$sql = "SELECT * FROM luv2kayak_items WHERE productTitle " . $searching . " AND published = 'Y'";

echo $sql;  //  to debug


if(isset($_GET['page'])) {
	$pageNum = $_GET['page'];
	}
else {
	$pageNum = 1;
	}
$itemsPerPage = 15;
$offset = ($pageNum - 1) * $itemsPerPage;
$results = mysql_query($sql);
$numOfProducts = mysql_num_rows($results);

$sql .= "ORDER BY id LIMIT $offset, $itemsPerPage";


$result = mysql_query($sql);


And I get

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in mysite/searchresults.php on line 39
 
Top