Assuming that the 'email' column in the db is a primary key, you can get rid of the select statement and just issue a REPLACE statement, like this:
$db = "register";
$link = mysql_connect("localhost:/users/rupertbj/domains/rupstar.co.uk/sql/mysql.sock", "root" );
if ( !$link ) die( "Couldn't connect to MySQL" );
mysql_select_db( $db, $link ) or die( "Couldn't open $db: ".mysql_error() );
$query = "REPLACE INTO userTable (EMAILFIELD, DATEFIELD) VALUES ( $email, now() )";
mysql_query( $query, $link );
mysql_close( $link );
Notice that the replace statement I used is different than the one you originally had.
You need to include the PRIMARY KEY in the replace statement, so I'm going to assume that your primary key is the email column. That is how the REPLACE statement works, if the primary key already exists it just writes over it with the updated information, if it does not exist it does an insert into the db.
Try that, at least try the different replace statement, and see if you have any more luck.
-- Jason