strip_tags() and htmlspecialchars() are normally for escaping output to the browser, not to the database. The database couldn't care less if the text being inserted contains HTML tags or any other characters which HTML considers "special". (It just cares that you have escaped any special SQL characters.) I generally prefer to have the raw data in the database so that I can manipulate it, search it, sort it, etc. by what was intended to be stored; then when you actually output it to a browser, you can use any of those HTML-related escaping mechanisms as is appropriate.
However, if you do not want to allow any or all HTML tags in the data, then it should be tested for as part of the input filtering, and if found rejected with an error to the user, rather than silently stripping it out and inserting what's left into the database, e.g.:
if(strip_tags($_GET['field']) != $_GET['field'])
{
// reject with an error and do not process this request.
}
So the process is:
1. Filter the inputs from the user ($GET), and reject any invalid input as an error.
2. If you have valid input, then if storing it in a DB use an applicable escaping mechanism for that DBMS.
3. If outputting the data to a browser, either directly from $GET or after retrieving it from the DB, escape it with an applicable mechanism for [X]HTML output.