Hi Mike,

To be perfectly honest, other than being a Microsoft thing, I don't really
know what .NET is.  Pretty pathetic, huh?  :)

This is some PHP code on Linux.  I suspect it was originally written on a
Microsoft operating system because when I edit the files, my editor reports
the textfiles as being "dos" (they contain carriage-return and linefeeds at
the end of each line).

I hear you about the []; I *wish* I could use them.  Proper quoting inside
of PHP is very painful:


       $query = "INSERT INTO $database_table
          (id, day, month, date, year, category, title, body, showpref)
          VALUES (null,
          '" . sqlite_escape_string($_POST['the_day'])      . "',
          '" . sqlite_escape_string($_POST['the_month'])    . "',
          '" . sqlite_escape_string($_POST['the_date'])     . "',
          (snip)

The stuff that looks quoted (the middle section) is actually the stuff
outside the language quotes, but inside the quoted quotes.  Gruesome.

But if I don't use sqlite_escape_string, single quotes cause a "SQL logic or
missing database" error.

But then, if I use sqlite_escape_string, I have to test get_magic_quotes_gpc
and use stripslashes, and Eugene recommended.  Hard to believe there isn't a
better way of doing this!

Pete



On Thu 17 Mar 05,  5:59 AM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> said:
> Are you using the SQLite .NET provider?  Just curious, anyway, SQLite also
> supports using [ ] instead of  " " and believe me it's a good thing, using
> " " as delimiters is a poor choice considering this conflicts with almost
> all languages when it comes to string concatenation. In fact, I recommend
> use [ ] over " " all of the time, however, the SQLite .NET managed driver
> has issues with the [ ] delimiter style.
> 
> 
> > I've nearly completed converting Wheatblog to sqlite.  It's been quite a
> > learning experience!  I've come across a problem I haven't been able to
> > figure out, though.
> >
> > Whenever I made a blog post that had a forward quote character (') in
> > either
> > the title or the body of the post, I'd get an error.
> >
> > After a little Googling, I changed my query to:
> >
> >
> >       $query = "INSERT INTO $database_table
> >          (id, day, month, date, year, category, title, body, showpref)
> >          VALUES (null,
> >          '" . sqlite_escape_string($_POST['the_day'])      . "',
> >          '" . sqlite_escape_string($_POST['the_month'])    . "',
> >          '" . sqlite_escape_string($_POST['the_date'])     . "',
> >          '" . sqlite_escape_string($_POST['the_year'])     . "',
> >          '" . sqlite_escape_string($_POST['the_category']) . "',
> >          '" . sqlite_escape_string($_POST['the_title'])    . "',
> >          '" . sqlite_escape_string($_POST['the_body'])     . "',
> >          '" . sqlite_escape_string($_POST['the_showpref']) . "')";
> >
> >       DB_query($query, $db);
> >
> > and the definition of DB_query is:
> >
> >
> >    function DB_query($cmd, $db)
> >    {
> >       $retval = sqlite_query($db, "$cmd")
> >          or die('Query Error: ' .
> > sqlite_error_string(sqlite_last_error($db)));
> >
> >       return $retval;
> >    }
> >
> > This works in the sense that forward quotes no longer generate an error.
> > However, whenever I print out a blog post, the forward quotes are all
> > escaped.   So if I post:
> >
> >    This contains a ' character.
> >
> > The post, when printed looks like:
> >
> >    This contains a \' character.
> >
> > What's the proper way to ensure that ' characters are properly quoted but
> > don't show up in the output?

-- 
Save Star Trek Enterprise from extinction: http://www.saveenterprise.com

GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E  70A9 A3B9 1945 67EA 951D

Reply via email to