I don't know mysql, but you could try these two variants.
In postgresql, it would be exactly like you did it, except with single quotes around 25 seconds:
mysql_query("DELETE FROM heartbeat WHERE when + INTERVAL '25 SECONDS' < NOW()");
In mssql, treat it like a float with 1.0 being 1 day
mysql_query("DELETE FROM heartbeat WHERE when + 25.0/60.0/60.0/24.0 < getdate()");
or
mysql_query("DELETE FROM heartbeat WHERE when + 25.0/60.0/60.0/24.0 < now()");
(25 seconds, divided by seconds in a minute, minutes in an hour, and hours in a day)