No. Hace un lío terrible de sus datos.
Sí. Puede proteger su código de las inyecciones de SQL.
Aquí está una breve explicación que ya he hecho
Solo tengo que agregar que no debe estropear sus matrices de datos de origen.
La matriz POST no tiene nada que ver con SQL. Los datos pueden ir a un correo electrónico, un formulario HTML, un archivo, un servicio en línea, etc. ¿Por qué tratarlo todo con protección SQL?
Por otro lado, puede tomar sus datos no de POST sino de un archivo, en línea servicio, otra consulta.
Por lo tanto, debe proteger no las matrices de origen, sino los datos reales que se incluyen en la consulta
Hablando de XSS, no hay una regla universal simple nuevamente.
Pero en general, debe usar htmlspecialchars($data,ENT_QUOTES);
para todos los datos no confiables que genera como texto, y algunos otros tipos de validaciones en algunos casos especiales, como nombres de archivo