Como nota interesante en relación a este tema, hace poco conseguí
un post (en inglés) que muestra precisamente el tipo de problemas que pueden ocurrir al confiarse en el type casting/type juggling.
Tal como se puede ver en ese post, un código como este genera un resultado bastante erróneo a nivel lógico:
Código PHP:
$var1 = '111 ';
$var2 = '21';
var_dump ( $var1 < $var2 ); // mostrará bool (true)
Las razones del por qué eso es erróneo son obvias, pero en lo que compete a este tema, es un ejemplo del por qué es igual de erróneo que FALSE, NULL o '' en mysql_connect() sean interpretados como 'root' o 'localhost'