I just revied the ParamValues docs, and it reminded me of a question I had 
WRT ParamValues and prepared statements. 

The docs say:

          It is possible that the values in the hash returned by "ParamVal-
           ues" are not exactly the same as those passed to bind_param() or
           execute().  The driver may have modified the values in some way
           based on the TYPE the value was bound with. For example a floating
           point value bound as an SQL_INTEGER type may be returned as an
           integer.

Now, in DBD::mysql I change the behaviour of bind_param() depending on 
whether server-side prepared statements are enabled. If they are 
enabled there is no quoting of the string passed into bind_param() because 
it gets passed directly to mysql_bind_params() at execute time, but when 
server-side prepared statements are disabled I call quote() based on the 
bind type and tuck that away to be used at execute time. This obviously 
keeps the driver from having to requote bind params every time execute is 
called.

But all of this means that strings in $sth->{ParamValues} vary depending 
on whether server-side prepare is enabled.  If enabled you get the string 
you passed it, if disabled you get the quoted string back.

Is this acceptable? Or would you rather see it work differently?


Rudy

Ps. I am reading the subversion book, and it looks pretty simple ;)

Reply via email to