First up, $_REQUEST should contain either the POST or GET data depending on which method was used to submit the request. There should always be either POST or GET if the request is made over HTTP - are you sure it's not there?
Second, writing extract( $REQUEST ); is a huge security risk, with the potential for all sorts of nasty behaviour, for example:
$myvar = "something thats fine to write to database";
extract( $_REQUEST );
mysql_query( "INSERT INTO sometable '$myvar'" );
If some malicious user knew that the code looked like this, they could make a request of yourfile.php?myvar=evildata and overwrite your safe data. The behaviour of extract() can be changed in a few ways, but still use it with extreme caution. From the manual:
Do not use extract() on untrusted data, like user-input ($_GET, ...). If you do, for example, if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini.
Third, you should always use mysql_real_escape_string(), or the other database versions to escape data. The slashes and so forth just tell the database to treat the characters literally, and not as structural characters. They are written to the database in their original form. So you need to remember to escape them again when displaying on a web page. htmlentities() usually does the trick here.