[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

No me funciona MySQL en Apache+PHP



Hola a todos,

Ayer me estuve peleando largo tiempo con PHP en Apache y hoy le toca el turno 
a MySQL. En realidad lo único que quiero es usar el weblog Jaws, pero me ha 
tocado aprender un poco sobre Apache, PHP y MySQL, que nunca viene mal.

Bueno, pues para resumir digamos que no consigo que páginas PHP servidas por 
Apache accedan a bases de datos MySQL. PHP funciona pues he probado alguna 
página de prueba y va bien. Para testear el funcionamiento de MySQL he 
probado el siguiente código de ejemplo que he encontrado en un manual. Accede 
a la base de datos "mysql" que se crea por defecto. Antes de nada he puesto 
una clave a "root" para acceder a las bases de datos (llamémosla 
"mi_clave_root"). Añado también que desde consola accedo perfectamente a la 
base de datos mediante "mysql -u root -p mysql".


<?php
// Ejemplo de acceso a base de datos MySQL.

// Conseguimos la conexión.
$link = @mysql_connect('localhost', 'root', 'mi_clave_root');
if (!$link) {
    exit('<b>Error</b>: No se puede conectar con la base de datos. 
'.mysql_error());
}

$ddbb = 'mysql';
if (!@mysql_select_db($ddbb)) {
    exit("<b>Error</b>: No se encuentra la base de datos '$ddbb'.");
}

// Ejecutamos una consulta.
$sql = 'SELECT * FROM help_keyword';
$res = @mysql_query($sql);
if (!$res) {
    exit("<b>Error</b>: La consulta '$sql' ha fallado. ".mysql_error());
}

// Mostramos el metadata de la tabla.
echo '<table border="1">';
echo '<tr> <th>Nombre</th> <th>Tipo</th> <th>Permite NULL</th> </tr>';
$numFields = mysql_num_fields($res);
for ($i = 0; $i < $numFields; $i ++) {
    $meta = mysql_fetch_field($res, $i);
    echo '<tr>';
    echo "<td>$meta->name</td>";
    echo "<td>$meta->type</td>";
    echo "<td>$meta->not_null</td>";
    echo '</tr>';
}
echo '</table>';
echo '<br>';

// Mostramos el contenido de la tabla.
echo '<table border="1">';
echo '<tr>';
for ($i = 0; $i < $numFields; $i ++) {
    $meta = mysql_fetch_field($res, $i);
    echo "<th>$meta->name</th>";
}
echo '</tr>';
while ($row = mysql_fetch_row($res)) {
    echo '<tr>';
    foreach ($row as $col) {
        echo "<td>$col</td>";
    }
    echo '</tr>';
}
echo '</table>';

// Liberamos los recursos y cerramos la conexión.
mysql_free_result($res);
mysql_close($link);
?>



El caso es que tras abrir esta página con el navegador no muestra 
absolutamente nada, toda la página en blanco. Y me extraña porque al menos, 
en el primer párrafo de código pone:

// Conseguimos la conexión.
$link = @mysql_connect('localhost', 'root', 'mi_clave_root');
if (!$link) {
    exit('<b>Error</b>: No se puede conectar con la base de datos. 
'.mysql_error());
}

Si no se conecta debería presentar el mensaje de error, ¿no? Repito que si 
funciona PHP en Apache pues si abro una página PHP con contenido:
<?php
phpinfo();
?>
Entonces muestra toda la info de PHP perfectamente en el navegador.


Doy por hecho que todo esto será un error de novato, pero por más que busco no 
encuentro una solución. Creo tener instalados todos los paquetes para PHP y 
Apache (he hecho "apt-cache search php apache" y no veo nada más evidente que 
lo que ya tengo), y ojeando el "/etc/httpd.conf" no veo ninguna línea 
asociada a MySQL nisiquiera a SQL.

¿Alguien me echar una mano? Muchas gracias.



Reply to: