Re: mysql syntax problem

2002-10-02 Thread Michael Fowler

On Wed, Oct 02, 2002 at 09:06:16AM +0100, [EMAIL PROTECTED] wrote:
 when i query a mysql db within a perl script
 this works fine...
 $sth = $dbh-prepare (SELECT venue from base1 WHERE op = 'K Trevan');
 
 this doesn't..
 $sth = $dbh-prepare (SELECT venue from base1 WHERE op = 'K O'Trevan');
 
 i know the issue is 'K O'Trevan'  in that the 2nd ' completes
 
 i just don't know how to resolve it  - other than  changing 'K O'Trevan' to
 'K O Trevan'

Use placeholders:

$sth = $dbh-prepare(SELECT venue FROM base1 WHERE op = ?);
$sth-execute(K O'Trevan);

This is a little silly with literal values, as you can easily escape them
manually.  It works much better with data you get from sources that won't
escape it, such as user input.

Read about placeholders in perldoc DBI.

As for manually escaping your values, that's an SQL question, and you should
read the documentation on your database for information on that.


Michael
--
Administrator  www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: mysql syntax problem

2002-10-02 Thread Steven_Massey


Michael   Excellent - read DBI/placeholder

thanks



   

  Michael Fowler   

  michael@shoebox To:  [EMAIL PROTECTED] 

  .netcc:  [EMAIL PROTECTED] 

   Subject: Re: mysql syntax problem   

  10/02/02 09:33   

  AM   

   

   





On Wed, Oct 02, 2002 at 09:06:16AM +0100, [EMAIL PROTECTED]
wrote:
 when i query a mysql db within a perl script
 this works fine...
 $sth = $dbh-prepare (SELECT venue from base1 WHERE op = 'K Trevan');

 this doesn't..
 $sth = $dbh-prepare (SELECT venue from base1 WHERE op = 'K O'Trevan');

 i know the issue is 'K O'Trevan'  in that the 2nd ' completes

 i just don't know how to resolve it  - other than  changing 'K O'Trevan'
to
 'K O Trevan'

Use placeholders:

$sth = $dbh-prepare(SELECT venue FROM base1 WHERE op = ?);
$sth-execute(K O'Trevan);

This is a little silly with literal values, as you can easily escape them
manually.  It works much better with data you get from sources that won't
escape it, such as user input.

Read about placeholders in perldoc DBI.

As for manually escaping your values, that's an SQL question, and you
should
read the documentation on your database for information on that.


Michael
--
Administrator  www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--






-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




RE: mysql syntax problem

2002-10-02 Thread nkuipers

Use placeholders:

Could you also use quote() for this?

Ain't no blood in my body, it's liquid soul in my veins
~Roots Manuva


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: mysql syntax problem

2002-10-02 Thread Michael Fowler

On Wed, Oct 02, 2002 at 09:25:43AM -0700, nkuipers wrote:
 Could you also use quote() for this?

Yes, $dbh-quote() can also be used for quoting strings.  I generally don't
suggest it because it's more awkward and makes for less readable code than
placeholders.


Michael
--
Administrator  www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]