As others have said, posting the error that mysqlPP is giving you would help identify the error. It'll let you know if it's dying on the prepare or execute instead of assuming it's on the prepare (which it can't be, because it's the execute that's trying to insert the values of your variables). If memory serves, passing values through the execute statement automatically (and correctly) quotes your variables.
in reply to mySQL Query Problem
Are you checking to make sure that each of your variables ($user,$title,$msg,$cat,$state,$country,$img,'left',$expiration,$name) have values and that each of those values match the type of data that the database is expecting? If one or more of them are undefined, you're binding 10 fields to less than 10 variables and mysql doesn't like that. Also, if a field is defined as an integer, but receives varchar, mysql doesn't like that either.
If this doesn't help, please post the dbi error message.