Buenas, estoy intentando conectar con una base de datos a través de PHP, estos son los archivos que tengo.
configuracion.php
Código PHP:
<?php
$dbhost = 'localhost';
$db = 'megacursos';
$dbuser = 'root';
$dbpass = '';
$link_megacursos = mysqli_connect($dbhost, $dbuser, $dbpass, $db);
//Comenzamos la sesión
session_start();
?>
Luego, desde un archivo llamado consultas.php, hago lo siguiente:
Código PHP:
<?php
include('configuracion.php');
$usuarios = mysqli_query($link_megacursos, "SELECT * FROM usuarios");
function getUsuarios() {
while ($fila = mysqli_fetch_array($usuarios)) {
echo $fila['id'] . "<br/>";
echo $fila['nombre'] . "<br/>";
echo $fila['apellidos'] . "<br/>";
echo $fila['user'] . "<br/>";
echo $fila['pass'] . "<br/>";
echo $fila['email'] . "<br/>";
echo $fila['telefono'] . "<br/>";
echo $fila['nivel'] . "<br/>";
}
}
?>
Pero se me muestra este error al intentar mostrar los contenidos de la base de datos:
Código:
Notice: Undefined variable: link_megacursos in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 9
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 9
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 11
Entiendo que el problema está en que no está reconociendo la variable $link_megacursos definida en configuracion.php, pero si existe, y no entiendo por qué no la localiza. Además, tengo otro archivo en el que uso el include(configuracion.php) y sí que funciona con las mismas funciones. Además, la ruta está bien escrita porque incluyo una funcion con un echo en el archivo configuración.php y lo muestra correctamente. Este es el código que si me funciona, un archivo para comprobar usuairos:
Código PHP:
<?php
//Nos conectamos con la base de datos
include('../main/funciones/configuracion.php');
$usuario = $_POST['p_username'];
$usuario = addslashes($usuario);
$usuario = strip_tags($usuario);
$contrasena = $_POST['p_password'];
$contrasena = addslashes($contrasena);
$contrasena = strip_tags($contrasena);
//Conexion con la base de datos
$usuarios = mysqli_query($link_megacursos, "SELECT * FROM usuarios WHERE user='$usuario' and pass='$contrasena'");
//Comprobamos que el nombre y usuario son correctos
if ($fila = mysqli_fetch_array($usuarios)) {
//Una vez comprobado si el login es correcto, asignamos las variables de sesion
session_start();
$_SESSION['nombre'] = $fila["nombre"];
$_SESSION['nivel'] = $fila["nivel"];
$_SESSION['telefono'] = $fila["telefono"];
define("PAGINA_INICIO", "../main/index.php");
header("Location: " . PAGINA_INICIO);
} else {
//Redireccionar a la pagina de inicio
define("PAGINA_INICIO", "../index.php?mensaje=mensaje_error");
header("Location: " . PAGINA_INICIO);
}
?>
¿Por qué en el segundo caso si que funciona la conexión con la base de datos y en el primer caso no? En ambos casos intento rescatar los datos de la misma manera y en ambos está declarado el include()...
¿Alguna idea?
Gracias y un saludo.