Thread: Var substitution in SELECT statements

Var substitution in SELECT statements

From
Randall Perry
Date:
This works:
$res  = $conn->exec("select cust, contact, user_name, email from $t where
user_name = a1a");

This doesn't:
$c = "a1a";
$res  = $conn->exec("select cust, contact, user_name, email from $t where
user_name = $c");

and returns the error:
    Attribute 'a1a' not found


How do you do var substitution with the Pg module in Perl?

--
Randy Perry
sysTame
Mac Consulting/Sales




Re: [GENERAL] Var substitution in SELECT statements

From
Randall Perry
Date:
on 4/23/01 9:20 PM, Randall Perry at rgp@systame.com wrote:

> This works:
> $res  = $conn->exec("select cust, contact, user_name, email from $t where
> user_name = a1a");
>
> This doesn't:
> $c = "a1a";
> $res  = $conn->exec("select cust, contact, user_name, email from $t where
> user_name = $c");
>
> and returns the error:
> Attribute 'a1a' not found
>
>
> How do you do var substitution with the Pg module in Perl?

Whoops! Needed to quote the var as so (for $c above):

$c = "\'$c\'";

Works now.

--
Randy Perry
sysTame
Mac Consulting/Sales


Re: [GENERAL] Var substitution in SELECT statements

From
Tod McQuillin
Date:
On Mon, 23 Apr 2001, Randall Perry wrote:

> This works:
> $res  = $conn->exec("select cust, contact, user_name, email from $t where
> user_name = a1a");
>
> This doesn't:
> $c = "a1a";
> $res  = $conn->exec("select cust, contact, user_name, email from $t where
> user_name = $c");
>
> and returns the error:
>     Attribute 'a1a' not found
>
> How do you do var substitution with the Pg module in Perl?

First, I would highly recommend you investigate the perl DBI abd DBD::Pg
modules -- they handle variable placeholders quite efficiently and
correctly.

But for your problem above, surely you must use single quotes around any
string you include as a literal in an SQL query.

$res = $conn->exec("select cust, contact, user_name, email from $t
where user_name = '$c'");
-- 
Tod McQuillin