This outputs nothing because the above is equivilent to:
<input value=""I can't"">
The first double quote closes the value attribute.
The above parses to the following:
<input value='"I can't"' />
The single quote closes the value attribute, hence why you've only receieved the value of "I can
mysql_real_escape_string() should only be used for input into your database, not for output. HTML cannot escape special entities by preceding them with a backslash, which is why your message stops at the first single quote found (closing the value attribute).
So what's the solution? Using the function htmlentities() or htmlspecialchars() to translate HTML equivilents into those entites to ensure they don't conflict with the pre-existing HTML code.
$say = htmlentities('"I can\\'t"');
$inputSay = '<input value="'.$say.'" />';