Re: [Q] storing JSON, problem with 'escapes'

Andrew McMillan <[email protected]>
Newsgroups gmane.comp.db.postgresql.php
Message-ID <[email protected]>
On Fri, 2008-11-21 at 01:54 -0500, V S P wrote:
> Hi,
> I am using PHP's json_encode function on
> an array of strings
> that gives me back a JSON encoded string.
> 
> Some of the elements in the string arrays have
> double quotes.  So PHP's json_encode correctly
> escapes them (according to JSON specifications)
> with \.
> 
> For example here is a an array element
> 
> "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK("b2122") ;}"
> 
> would get encoded in JSON as
> 
> "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK(\"b2122\") ;}"
> 
> And that's correct.
> Now, the problem is that with PDO (or may be postgresql itself)
> I get 
> 
> 
> "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK(\\"b2122\\") ;}"
> 
> 
> and I get then the POSTGRESQL warning
> 
> WARNING:  nonstandard use of \\ in a string literal at character 240
> HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.

When you construct your SQL, if you are going to construct it as a
string, like:

INSERT INTO blah ( json_column )
 VALUES ( 'VLADIKVLADIKVLADIKVLADIK(\\"b2122\\")' )

You need to instead insert as:

INSERT INTO blah ( json_column )
 VALUES ( E'VLADIKVLADIKVLADIKVLADIK(\\"b2122\\")' )


The "E" in front of the string is a special PostgreSQL thing which
explains that the string is encoded with \ escaping.

See:

http://www.postgresql.org/docs/8.3/interactive/sql-syntax-lexical.html


particularly the box labelled 'caution' and the paragraph above it.

Regards,
					Andrew McMillan.


------------------------------------------------------------------------
andrew (AT) morphoss (DOT) com                            +64(272)DEBIAN
                 You have a truly strong individuality.
------------------------------------------------------------------------



-- 
Sent via pgsql-php mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php
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.