Jannis Kafkoulas wrote:
> Hi,
> 
> I have this table:
> 
> create TABLE netobj (
> name VARCHAR(100), 
> type int(1), 
> ip_mem VARCHAR(1100), 
> mask VARCHAR(15) default "na", 
> comment VARCHAR(50) default "-", 
> mark int(1) default 0, 
> primary key(name));
> 
> (on a debian etch).
> 
> After emtying the table successfully I'm trying to insert new records 
> just read from a file (This is working fine with DBI::Mysqlsimple).
> 
> In the DBD::Mysql docu it says:
> 
> # INSERT some data into 'foo'. We are using $dbh->quote() for
>   # quoting the name.
>   $dbh->do("INSERT INTO foo VALUES (1, " . $dbh->quote("Tim") . ")");
> 
>   # Same thing, but using placeholders
>   $dbh->do("INSERT INTO foo VALUES (?, ?)", undef, 2, "Jochen");
> 
> 
> When I now use the statement:
> 
> $dbh->do("insert into $objtbl values (?,?,?,?,?,?)", 
> $name,$type,$ip,$mask,$comment,$mark);
>  
> in my Perl script I get the error message:
> 
> DBI::db=HASH(0x82a6388)->do(...): attribute parameter 
> 'g-ef_epn-iers-ica-citrix-clients' is not a hash ref 
> at dbd_ldtbl.pl line 51, <OBJ> line 2.
> 
> where "g-ef_epn-iers-ica-citrix-clients" ist the value of the $name variable.
> 
> Why the hell is here a hash ref expected?
> 
> I'm afraid I didn't quite understand how it realy works:-(.
> 
> Thanks for any help
> 
> Jannis
> "
> 
> 
> 
> 
>       

If you read the pod for the do method it says:

        $rv  = $dbh->do($statement, \%attr, @bind_values);

and you omitted \%attr. If you have not attributes to set, pass an undef
like this:

$dbh->do("insert into $objtbl values (?,?,?,?,?,?)", undef,
$name,$type,$ip,$mask,$comment,$mark);

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to