bertrc echo $sex_validation; it`s not working
It is doing what you wrote it to do. It is replacing 'man' or 'woman' with an empty string. Since an empty string is a false value, your logic test to build and run the sql query is false.
You have gone overboard with validation. You should not modify input data, e.g. the preg_replace() statements. You should only trim data (mainly so that you can detect if all white-space characters were entered), then validate it. If the data is valid, use it. If it is not valid, setup a message for the user telling them what was wrong with the data that they submitted.
If you store user/validation errors in an array, using the field name as the array index, it will simplify all your error logic. You can simply test at any point if the array holding the errors is empty() or not !empty().
Your code implies that you are copying every form field value to other variables. This is a waste of typing. Keep the form data as a set, in an array variable, then use elements in this array variable throughout the rest of the code. This will let you operate on the data using php array functions, such as trimming all the data at once with one line of code, and support more advanced programming, such as dynamically validating and dynamically processing the data.
date_parse_from_format() returns an array, regardless of any warnings or errors. You must specifically test the warning_count and error_count values in your code.
By typing an extra space on the end of each of the values being put into the sql query statement, you are modifying and corrupting the values. Why do you have those spaces there? As written in a reply in one of your previous threads, using prepared queries simplifies the sql query syntax, helping to prevent mistakes, and simplifies all the code, provided you switch to the much simpler PDO database extension.