I've just spent hours trying to track this one down and I think I've got to the problem.
I'm using perl 5.8.8, on mysql 5.0.45. I have a prepared statement:
$blah = $dbh->prepare('INSERT INTO blah (country,province) VALUES (?,?)');
Then I loop through a loads of executes and everything is fine until the values are as follows:
$blah->execute('Austria', 'Kärnten');
ie. where a UTF8 character is present. It's all utf8::decode()ed up (and I've tried double decoding, re-encoding, doing nothing to it and doing everything I can possibly think to it)
The values that end up in the table are: 'Austria' & 'K'.
Now the strange thing is that if I put the arguments in the prepare() and re-prepare it every time, it works fine. It just won't take them via the execute().
Has anybody seen this before? Am I being really dumb and missing something? Can anybody think of a workaround other than re-preparing the statement every time?
Cheers
MattLG
In reply to UTF8 execute() parameters (DBI) by MattLG
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |