El problema es que cuando pulsas enter se hace submit del formulario pero no se setea la variable del botón de submit. Por eso, en tal caso, no se entra en la alternativa. En tu caso, te funcionaría mejor mirar si $_POST['busca'] está seteada, en lugar de $_POST['Enviar']. Además, creo que deberías poner todo el código dentro de la alternativa, porque sólo te interesa iterar en $resultado cuando se haya producido la consulta:
Código PHP:
/* Si $_POST['busca'] está seteada, es seguro que el script ha sido
llamado por POST y si el script ha sido llamado por post mediante el
formulario indicado, es seguro que $_POST['busca'] contiene un valor
(aunque sea cadena vacía). */
if(isset($_POST['busca'])) {
$frase= $_POST['busca'];
// Solo se ejecuta si se ha enviado el formulario
// Conexion, seleccion de base de datos
$enlace = mysql_connect('mysql', 'user', 'pass')
or die('No pudo conectarse : ' . mysql_error());
echo 'Conexión exitosa';
mysql_select_db('bd') or die('No pudo seleccionarse la BD.');
// Realizar una consulta SQL
$consulta = "SELECT * FROM libros WHERE autor LIKE '%$frase%' OR titulo LIKE '%$frase%' OR descripcion LIKE '%$frase%'";
$resultado = mysql_query($consulta) or die('La consulta falló: ' . mysql_error());
// Impresion de resultados en HTML
echo "<table border=1>\n";
while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($linea as $valor_col) {
echo "\t\t<td>$valor_col</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Liberar conjunto de resultados
mysql_free_result($resultado);
// Cerrar la conexion
mysql_close($enlace);
}