SPUG: DBI bind_param in MySQL

Colin Meyer cmeyer at helvella.org
Fri Nov 26 16:53:51 CST 2004


On Fri, Nov 26, 2004 at 02:16:45PM -0800, Michael R. Wolf wrote:
> 
> When I try this, I get a literal (e.g. "first_name") in the output,
> not the value of the field.
> 
>     my $sth = $dbh->prepare("SELECT ? FROM bod")
>       or die "Cannot create sth: $DBI::errstr";
> 
>     $sth->bind_param(1, "first_name");
> 
>     $sth->execute()
>       or die "Cannot execute statement: $DBI::errstr";
> 
> Am I missing something important, or is this feature unavailable with
> MySQL?

Every relational database that I have used (including MySQL) only lets
you use placeholders for values, not for identifiers (e.g. column or
table names).

You could, for example:

  my $sth = $dbh->prepare( <<'End_of_SQL' );
    SELECT first_name
    FROM bod
    WHERE first_name LIKE ?  
  End_of_SQL

  $sth->execute( 'Mi%' );

-Colin.


More information about the spug-list mailing list