My first question has to do with using "%" and "_" in MySQL. According to the documentation from PHP's mysql_escape_string() function, these characters are not escaped. Why not? Are they OK to use as is?
Interesting. '%' in columns can play havoc when combined with LIKE. Even worse, mysql takes % in columns as a wildcard. So I believe it could be a problem. In your php you would need to handle occurrences of '%' if you are using LIKE on that value.
I don't know if what I'm describing is actually a join, but that's the term I've heard tossed around. So how would I do this?
Yes, a join is exactly what you want as it allows you to match rows between tables.
SELECT username, subject, postdate, content
FROM mbposts
INNER JOIN users
ON (postid = ? AND mbposts.userid = users.userid);