I have a perfectly working wpdb prepare statement before Wordpress 3.5. This is my line:
$post_id = $wpdb->get_var($wpdb->prepare( \"SELECT a.post_id
My bad, this is so simple! Wordpress uses two placeholders %s and %d.
%s should be used when passing strings to the database
while:
%d should be used for integers.
My problem above is that I've mixed them up, I use %d for strings or %s for integers. So the problem is resolved by using the correct placeholders for your specific data type. Problem solved.
For example if you are querying the database using id with php variable $id, the placeholder should be %d because it's integer otherwise for strings, such as names, etc. use %s.