[Resuelto] Problema con prepare() MySQLi

Iniciado por Penguin, 15 Abril 2018, 15:11 PM

0 Miembros y 1 Visitante están viendo este tema.

Penguin

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;

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]

<?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.

Penguin

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.