Thanks for your answer, you can see my comments below.

-----Original Message-----
From: Matt W [mailto:[EMAIL PROTECTED]
Sent: Thursday, November 13, 2003 3:36 PM
To: Jason Ramsey; [EMAIL PROTECTED]
Subject: Re: Backslash and full text searches


Hi Jason,

Of course somebody's isn't going to match somebody\'s. :-) somebody\'s
should match somebody\'s -- because it's really matching the "somebody"
part.

^ That makes sense to me, and the behavior I would have expected; except, it
doesn't seem to work that way.  Anything I try I can't get "somebody\'s" to
match a field in the database.

If you're using 4+, you can use IN BOOLEAN MODE to match
somebody\'s exactly:

MATCH (col) AGAINST (' "somebody\\\'s" ' IN BOOLEAN MODE)

^ Unfortunatley, this doesn't work.  I've tried several variations, but
can't seem to match useing MATCH, LIKE or even "=".

However, I get the feeling that you're not really wanting to match a
word that has a backslash in it. e.g. You're getting extra backslashes.
mysql_escape_string()/addslashes() *DOES NOT* store the backslashes in
the table -- it's not even *possible* since they're only escape
characters in the query. If you're getting any extra backslashes when
retrieving data, too many were added during insertion -- you ran
mysql_escape_string/addslashes too many times. This happens if PHP's
stupid magic_quotes_gpc is on and you don't check for that.

^hmm.  Well, that certainly is different than what I understood, and helpful
information.  It looks like magic_quotes_gpc is on.  However, now I have a
problem that we have a 100,000 entries in the database like this, and
500,000 lines of code expecting the backslash.  I really need to find a
solution so that I can search and somehow account for the "\" in my
searches.  Any help would be appreciated.


Your text should come out exactly the way it was intended. Never, ever
any need for stripslashes(), etc. if it was inserted correctly. :-)


Hope that helps.


Matt



----- Original Message -----
From: "Jason Ramsey"
Sent: Thursday, November 13, 2003 4:10 PM
Subject: Backslash and full text searches


> We make extensive use of full text searches, but have run into some
problems
> with backslashes.  If a word like "somebody's" is entered into our
database,
> we escape the string using "mysql_escapes_string" in php.  So,
> mysql_escape_string("somebody's") becomes "somebody\'s" when it is
saved in
> the database.  The problem is, we don't seem to be able to match
against
> this in the database.
>
> Let's say we saved "somebody's" in the data base.  The following will
match
> fine and pull up the results expected...
>
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ("somebody's")
>
> ... But if "somebody\'s" is stored in the database, there seems to be
no way
> to match the "\".  We've tried all of the following...
>
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ("somebody's")
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('somebody's')
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('"somebody's"')
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ("somebody\'s")
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('somebody\'s')
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ("somebody\\\'s")
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('somebody\\\'s')
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('"somebody\'s"')
> SELECT * FROM Table WHERE MATCH (Field) AGAINST ('"somebody\\\'s"')
>
> ... Any ideas?


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to