Re: [PHP-DB] Re: SELECT query

[email protected] (Chris)
Newsgroups php.db
Message-ID <[email protected]>
Bastien Koert wrote:
> On Sun, Dec 21, 2008 at 7:56 PM, Ron Piggott <[email protected]
>> wrote:
> 
>> One more thing ... Bible is stored by verses, t is the text of the verse
>>
>> On Sun, 2008-12-21 at 19:52 -0500, Ron Piggott wrote:
>>> I am working on a web based Bible searching query.  So far I am able to
>>> generate:
>>>
>>> SELECT * FROM `bible_verses` INNER JOIN `bible_books` ON
>>> `bible_books`.`id` = `bible_verses`.`b` WHERE `t` IN ( 'Lord' ,
>>> 'Jesus' ) LIMIT 0 , 10
>>>
>>> Is an "IN" the correct syntax to use?

This will work fine. An "IN" clause is like multiple OR's:

... where t = 'Lord' OR t = 'Jesus' ...

>>> I am trying to take what the user types in (variable is $keyword_search)
>>> and allow a search where if the same 2 or 3 words are in the verse of
>>> the Bible that verse would be a match, but not necessarily be beside
>>> each other.
>>>
>>> $keyword_search_string  = str_replace(" ", "' , '", $keyword_search);
>>> $query .= "IN ( '" . $keyword_search_string . "' ) ";

This will seem a little long winded but you need to check for sql 
injection. As it stands, you'll get an error when you search for a name 
with a quote (o'reilly). Might not be in the bible (I have no idea) but 
doesn't mean someone won't try it ;)


// look at the keywords one by one - they are space separated
$keywords = explode(' ', $keyword_search);

// now go through them all and escape them.
$keyword_searches = array();
foreach ($keywords as $keyword) {
   $keyword_searches[] = mysql_real_escape_string($keyword);
}

// then turn it all into an "IN" string.
$keyword_search_string = "IN ('" . implode("','", $keyword_searches) . "')";


You may want to eventually look at full text searching, depending on how 
slow this is and how important search is to your site. The syntax is 
completely different.

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

-- 
Postgresql & php tutorials
http://www.designmagick.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.