Hola, hace mucho tiempo no programaba en php y me encontré con que la función mysql() fue declarada obsoleta, por lo cual me veo forzado a tratar de aprender el funcionamiento de mysqli().
Tengo el siguiente código en
funciones.php;
<?php
global $conexion;
function conectarBD() {
$conexion = new mysqli('localhost', 'root', '', 'Zeta');
if($conexion->connect_errno) {
die('Error: '. $conexion->connect_errno);
}
return $conexion;
}
?>
Y por otra parte, tengo
login.php:
<?php
require('funciones.php');
$usuario = $_POST['usuario']; // Dato obtenido desde un formulario
conectarBD();
$sql_datos = "SELECT * FROM usuarios WHERE usuario = ?";
$sql_final = $conexion->prepare($sql_datos);
if($sql_final) {
$sql_final->bind_param("s", $usuario);
$sql_final->excecute();
$sql_final->store_result();
}
?>
Me devuelve el siguiente error:
CitarFatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\login.php:11 Stack trace: #0 {main} thrown in C:\xampp\htdocs\login.php on line 11
Marca error en el
prepare() de la consulta (ignoren "linea 11", ya que lo recorté para que sea más breve) como si fuera que no logra relacionar la preparación de la consulta, con la variable $conexion, aunque haya sido declarada globalmente... No comprendo cual es el error, si alguien puede ayudarme le agradecería.
Ya lo pude resolver. Por si alguien tiene este problema a futuro, la respuesta era que:
global $conexion
tenía que ir dentro de la función, ya que al usar require y no include, solo se llamaba a la misma y no al archivo funciones.php completo.
Saludos.