> -----Original Message-----
> From: James Hicks [mailto:[EMAIL PROTECTED]
> Sent: 15 June 2003 14:44
> 
> The following variable needs to be escaped before it can be 
> submitted as an 
> MySQL query. It seems that the \0 in this string is causing 
> me the problem. I 
> have tried several functions in an attempt to escape this 
> variable. Anybody 
> got any other suggestions. The resulting string should look like this:
> 
> EBCO\\030774-006\\BUBBLER VALVE
> 
> $variable = "EBCO\030774-006\BUBBLER VALVE";

OK -- because this string is double-quoted, PHP will process any valid
\-sequences in it.  \030 is a valid sequence representing the character with
octal code 030 which, if memory serves me correctly, is [Ctrl-^] -- so
that's why that sequence is translated into a "weird character". \B, on the
other hand, is *not* a valid sequence, and so is passed into the string
unchanged -- so what you end up with in $variable is:

  EBCO[Ctrl-^]774-006\BUBBLER VALVE

Thus, $variable now irrevocably has the weird [Ctrl-^] character in it in
place of \030, and no application of addslashes() or any other escaping
mechanism is going to change that.

To get a single slash at that point into the value you put in $variable, you
can do one of two things: either escape the backslash with another
backslash:

  $variable = "EBCO\\030774-006\BUBBLER VALVE";

or use single quotes, so that \ sequences are not translated:

  $variable = 'EBCO\030774-006\BUBBLER VALVE';

It helps, when you want to know exactly what value you've got into a
variable, to print_r() or var_dump() it -- so to show the correctness of
what I've just said, you could do the following:

  $variable = "EBCO\030774-006\BUBBLER VALVE";
  var_dump($variable);
  $variable = "EBCO\\030774-006\BUBBLER VALVE";
  var_dump($variable);
  $variable = 'EBCO\030774-006\BUBBLER VALVE';
  var_dump($variable);

Because either of the ways I have shown will put the literal sequence \030,
rather than [Ctrl-^], into your variable, you can happily addslashes() them
to get the desired result.

Hope this has shed a little light on your problem.

Cheers!

Mike

---------------------------------------------------------------------
Mike Ford,  Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 

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

Reply via email to