On Mon, Nov 25, 2002 at 07:48:14AM -0800, Michael A Chase wrote:
> > I'm assuming that the first time the statement is executed something is
> > trying to work out whether the field is numeric or string, and seeing a
> > number, assumes it's numeric. But then, every future insert fails, with
> > a highly misleading error ...
> 
> DBI remembers the types of placeholders after the first use.  Either
> enclose the number in quotes to make it a string or call bind_param() with
> a dummy value that can't get confused for a number before you call
> execute() the first time.

Yes, this is what I assumed. But consider a case where, for example, the
value is coming in from a form, in a mod-perl based environment, where
you've used prepare_cached.

Does this mean that best practice is to do something like:
        $insert->execute("$username", "$password");
just in case the first person to use the form happens to use a numeric
value as input? 

Seems a little strange and underdocumented...

And there's still the matter of the highly misleading error message:
 DBD::mysql::st execute failed: Unknown column 'nine' in 'field list'

The error of course being nothing to do with a column 'nine', as that's
the value being passed to it...

Tony


Reply via email to