|
Jim Gallacher
jpg at jgassociates.ca
Wed May 17 11:46:29 EDT 2006
Wouter van Marle wrote:
> Dear Deron,
>
> Thank you for the comments. I understand your ideas; unfortunately it
> does not solve my problem.
>
> The info I get from another website, this origin gives me the info in
> the ampersand form (that third party site is a Netscape server by the
> way! Didn't know they are still in use, very remarkable). And I like
> that.
> The main reason to continue using that format is the " (double-quotes)
> and ' (single quotes). These characters are used in the data that I try
> to store in the mysql base, and that fantastically messes up with the
> queries....
> imagine: s = "this is 'a' string"
> then say query = """ SELECT * FROM base WHERE field = "%s";"""% s
>
> But what about when s can be 'this is "a" string'
> or s = """this is a 5", 'b' sized thing""".
Don't build your query string that way, *especially* if you are getting
data from an untrusted source. You are laying yourself open to a SQL
injection attack. You want to use parameter passing. (for MySQLdb)
cur.execute("SELECT * FROM base WHERE field = %s", s)
The DBI will escape the quote characters for you (as well as the ';'
character), and stick quotes around the %s in the query string if required.
Jim
|