Maybe I'm looking at this the wrong way, but would you need to quote non-scalars if you were sticking to the prepare + execute method?
Doesn't the $dbh->do() method skip all DBI internal SQL checking and send it "as-is" for the database to figure out? I remember reading this somehere, and it occured to me that by using the method you had stated above, you could be running into SQL syntax problems if the quoting part didn't work out. Just a thought.