in reply to Re: Re: Learning DBI
in thread Learning DBI

I get the following error when the above code runs:
DBI prepare: invalid number of parameters: handle + 6

Thanks for the translation, it helps. Tell me if I have this correct:
The prepare statement stores an address into $sth then the execute command gets the information from the address in the database and translates it back to the data I need. Am I understanding it correctly?

Replies are listed 'Best First'.
Re: Re: Re: Re: Learning DBI
by gjb (Vicar) on Nov 07, 2002 at 22:15 UTC

    For the syntax error, see my update reply above.

    I'd not say that prepare stores an address. The following is taken from the DBI module docs

    .

    The DBI allows an application to ``prepare'' statements for later execution. A prepared statement is identified by a statement handle held in a Perl variable. We'll call the Perl variable $sth in our examples.

    The typical method call sequence for a SELECT statement is:

      prepare,
        execute, fetch, fetch, ...
        execute, fetch, fetch, ...
        execute, fetch, fetch, ...
    
    for example:
    $sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?"); $sth->execute( $baz ); while ( @row = $sth->fetchrow_array ) { print "@row\n"; }
    The typical method call sequence for a non-SELECT statement is:
      prepare,
        execute,
        execute,
        execute.
    
    for example:
    $sth = $dbh->prepare("INSERT INTO table(foo,bar,baz) VALUES (?,?,?)" +); while(<CSV>) { chop; my ($foo,$bar,$baz) = split /,/; $sth->execute( $foo, $bar, $baz ); }

    You can view prepare as a kind of compilation step. (The INSERT query puts something into the table.

    Hope this helps, -gjb-