On Mon, May 17, 2004 at 11:22:35AM -0300, Pedro Anisio wrote:
> I used trace() but still cannot figure out what is happening, but still dont
> work  :-(
> 
> I'm sending attached the log files and the program.

working:
    -> prepare for DBD::mysql::db (DBI::db=HASH(0x8925a28)~0x891f5a0
        'update mensagem set mens_stat = 2 where mens_codigo = 350027984 and mens_stat 
= 1')
    <- prepare= DBI::st=HASH(0x893ea20) at teste_update.pl line 20
    -> execute for DBD::mysql::st (DBI::st=HASH(0x893ea20)~0x893ead4)
    <- dbd_st_execute 1 rows

not working:
    -> prepare for DBD::mysql::db (DBI::db=HASH(0x8925a5c)~0x891f5e4
        'update mensagem set mens_stat = ? where mens_codigo = ? and mens_stat = ?')
    <- prepare= DBI::st=HASH(0x893ea34) at teste_update.pl line 20
    -> execute for DBD::mysql::st (DBI::st=HASH(0x893ea34)~0x893eae8 2 350027984 1)
      Binding parameters: update mensagem set mens_stat = '2' where mens_codigo = 
'350027984' and mens_stat = '1'
    <- dbd_st_execute 0 rows

I suspect if you change the working one to put quotes around the
values in the WHERE clause it'll break.

This aspect of the change log for 2.9002 applies:

        * Fixed bug where strings that were used in numeric
          context were not getting quoted on execute(). Now all
          parameters are bound as varchar by default.

          **NOTE** this is a change in behaviour that MAY cause problems
          with some SQL statements. If quoted integers, for example,  
          cause any problems, use bind_param(<column_id>, undef, SQL_INTEGER)
          to force a column to be bound as an integer.

Out of interest, what's the definition of the mensagem table?

Tim.

Reply via email to