[PHP-DB] Re: SELECT query

2008-12-21 Thread Ron Piggott

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?
 
 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 . ' ) ;
 
 How do I do this correctly?
 
 Ron
-- 

Acts Ministries Christian Evangelism
Where People Matter
12 Burton Street
Belleville, Ontario, Canada 
K8P 1E6

ron.pigg...@actsministries.org
www.actsministrieschristianevangelism.org

In Belleville Phone: (613) 967-0032
In North America Call Toll Free: (866) ACTS-MIN
Fax: (613) 967-9963


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] Re: SELECT query

2008-12-21 Thread Bastien Koert
On Sun, Dec 21, 2008 at 7:56 PM, Ron Piggott ron.pigg...@actsministries.org
 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?
 
  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 . ' ) ;
 
  How do I do this correctly?
 
  Ron
 --

 Acts Ministries Christian Evangelism
 Where People Matter
 12 Burton Street
 Belleville, Ontario, Canada
 K8P 1E6

 ron.pigg...@actsministries.org
 www.actsministrieschristianevangelism.org

 In Belleville Phone: (613) 967-0032
 In North America Call Toll Free: (866) ACTS-MIN
 Fax: (613) 967-9963


 --
 PHP Database Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php


query code looks correct. are you getting an error? have you tried echoing
out the sql and testing in phpmyadmin or some other gui tool?

-- 

Bastien

Cat, the other other white meat


Re: [PHP-DB] Re: SELECT query

2008-12-21 Thread Chris

Bastien Koert wrote:

On Sun, Dec 21, 2008 at 7:56 PM, Ron Piggott ron.pigg...@actsministries.org

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/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php