I've never understood the point to 'bind_param()', unless you really need to tell the driver what datatype the binding needs to be. I've always passed the parameters in during execute(), and haven't had any trouble (yet).
I usually DO use bind_columns() for the select statements, although this particular question was about an insert statement.
Update: Regarding
geektron's comment below, my only point was about using bind_param() explicitly as opposed to binding the parameters at execute time. I believe it does the same thing (please correct me if I'm wrong), and the only reason to use bind_param explicitly is to change the default bind_type.
(7 years later)Update: Well, I've finally gotten around to needing bind_param...now that I'm using DBI with Sybase (it just doesn't seem to like the default bindings sometimes).