.... $sql es una simple variable... su valor se lo defines directamente, su contenido es una query:
Código PHP:
$sql="SELECT nombre,apellido FROM mon_usuario WHERE usuario = '".$_POST['usuar']."' AND password = '".$_POST['contra']."'";
¿qué hay para que no esté definida ó te de un valor false???...
No sé a qué te refieras con "validar los datos de la bd" ¿?¿?¿?¿?????... Si lo que quieres es validar que alguna consulta se haya hecho entonces tienes que validar la variable a la que le asignaste el valor de esa consulta (el resultado, no la query) ó a la función misma...