PHP - erro fatal php y msqli

 
Vista:
sin imagen de perfil

erro fatal php y msqli

Publicado por saul (1 intervención) el 20/03/2023 21:32:22
no e encontrado la solución a este error quisiera que me ayudaran a para saber a que se debe y resolverlo o que me dieran posibles soluciones saludos






conexion
deteccion-de-error
error
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

erro fatal php y msqli

Publicado por Alejandro (839 intervenciones) el 21/03/2023 16:28:15
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Como formular UNA BUENA PREGUNTA para obtener ayuda más rápido en LWP

El mensaje de error es claro: el argumento de mysqli_query debe ser del tipo mysqli y esta recibiendo null.

En tu clase Conexion jamás se llama al método Conexion() por lo tanto $link nunca llega a tener valor.

Constructores y destructores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

erro fatal php y msqli

Publicado por Yoel (198 intervenciones) el 21/03/2023 17:53:05
Hola, Saúl, como bien te dice Alejandro, no basta solo con incluir en tu script la conexión. Para poder hacer uso de tu conexión tiene que link no ser vacío. En este caso dentro de la función de conexión de tu clase conexión no estás retornado ningún dato, por favor prueba haciendo un return al resultado de la conexión.

Nota: siempre es una buena práctica colocar el return dentro de tu función.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

erro fatal php y msqli

Publicado por Alejandro (839 intervenciones) el 21/03/2023 18:39:58
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
El problema es que el método Conexion() jamás se ejecuta.

1
2
$conexion = New Conexion();
$conexion->Conexion(); // Se ejecuta el método y por tanto $conexion->link pasa de null a tener un valor.

Puede ser confusión de saul puesto que en otros lenguajes (ej. Java) el constructor debe coincidir con el nombre de la clase.
En lugar de llamarse Conexión() debe ser __construct().
1
2
3
function __construct(){
    $this->link = mysqli_connect(...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

erro fatal php y msqli

Publicado por Kathyu (905 intervenciones) el 21/03/2023 18:48:20
Pero para eso está la depuración de código. Si algo esta correctamente probado no genera errores. Yo pongo de ejemplo una de las conexiones que tengo cuando hago código puro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_DATABASE', 'pruebas');
 
class DBM{
 
    // Para llamar al metodo privado conectar()
    public function conexion()
    {
        return self::conectar();
    }
    // Metodo privado donde hacemos la conexion a la DB
    private function conectar(){
        $MySQLi = $this->mysqli = new MySQLi (DB_HOST,DB_USER,DB_PASS,DB_DATABASE);
 
        if ($MySQLi->connect_errno){
            $debugger = '<b>Error al conectar al Servidor !!!<br>Error '.$MySQLi->connect_errno.':</b> '.$MySQLi->connect_error;
            echo $debugger;
            $error ='<br>
                    <div class="centrar" style="font-size:25px;">
                        <div class="label label-danger">
                            Error de Conexion, contacte con un Administrador !!!
                        </div>
                    </div>
                    <br>';
            echo $error;
        }
        else{
            // Definimos el charset de la DataBase
            $MySQLi->set_charset('utf8');
 
            // DataBase connection info
            // var_dump($this->mysqli);
 
            $response = '';
            $response .= $this->mysqli->host_info . "<br>";
            $response .= 'Conectado al Servidor: <b>'.DB_HOST.'</b><br>';
            $response .= 'Base de Datos: <b>'.DB_DATABASE.'</b><br>';
 
            $response .= ('Conjunto de caracteres de la Base de Datos es: <b>'.$this->mysqli->character_set_name().'</b><br>');
            echo $response;
        }
    }
 
    // Metodo publico para desconectarnos
    public function desconectar(){
        $MySQLi = $this->mysqli;
 
        // Si hay una conexion, la cerramos
        if (isset($MySQLi)) {
            $cerrar = $MySQLi->close();
            // Destruimos la variable
            unset($MySQLi);
            if ($cerrar) {
                $response = '<hr>Conexion a la Base de Datos Cerrada !!!';
            }
            else{
                $response = '<hr>La Conexion a la Base de Datos sigue Abierta !!!';
            }
        }
        else{
            $response = '<hr>Conexion no esta definida';
        }
        echo $response;
    }
}
 
$dbm = new DBM();
$dbm->conexion();
$dbm->desconectar();

El resultado es el siguiente
YosjS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

erro fatal php y msqli

Publicado por Yamil Bracho (22 intervenciones) el 21/03/2023 18:07:06
Siempre checa null o valores que retorna PHP cuando la llamada no es exitosa. En este caso retorna FALSE o puedes checar mejor la funcion mysqli_connect_error(). Por ejemplo

1
2
3
4
5
$this>link = mysqli_connect($host, $user,"$password, $database);
if (mysqli_connect_errno()) {
  echo "Erro de conexion: " . mysqli_connect_error();
  exit();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar