Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Fatal error: Call to a member function query() on a non-object in

Estas en el tema de Fatal error: Call to a member function query() on a non-object in en el foro de PHP en Foros del Web. Buenas compis ando algo perdido por falta de práctica en php, espero que tengan tiempo y puedan echarme una mano. Tengo en un archivo llamado ...
  #1 (permalink)  
Antiguo 29/12/2015, 17:12
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 8 meses
Puntos: 468
Fatal error: Call to a member function query() on a non-object in

Buenas compis ando algo perdido por falta de práctica en php, espero que tengan tiempo y puedan echarme una mano.

Tengo en un archivo llamado funciones la siguiente funcion que conecta a la base de datos:

Código PHP:
Ver original
  1. function conectar() {
  2.     $host = "mysql.hostinger.es";
  3.     $dbusuario = "u872502437_rodry";
  4.     $dbpass = "sonidosolaz";
  5.     $dbname = "u872502437_sound";
  6.  
  7.     $mysqli = new mysqli($host, $dbusuario, $dbpass, $dbname);
  8.     //verificamos la conexion
  9.     if(mysqli_connect_errno()) {
  10.       echo "conexion fallida: " . mysqli_connect_error();
  11.       exit();
  12.     }
  13.     return $mysqli;
  14.   }

Añado un require y llamo a la funcion en las páginas que necesito conectar a la BD:

Código PHP:
Ver original
  1. require("funciones.php");
  2. conectar();

y dentro del <body> intento mostrar los registros de la tabla:

Código PHP:
Ver original
  1. $query = "SELECT * FROM materiales";
  2.       if($result = $mysqli->query($query)) {
  3.         while ($row = $result->fetch_array()) {
  4.  
  5.                   ?>
  6.           <article class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
  7.                   <h2 class="alert alert-info"><?php echo $row['titulo']; ?></h2>
  8.                   <p><?php echo $row['descripcion']; ?></p>
  9.                 <img src="<?php echo $row['imagen']; ?>" class="img-responsive">
  10.                 <p class="precio"><small>Precio:</small> <?php echo $row['precio']; ?> €</p>
  11.           </article>
  12.           <?php
  13.         }
  14.         $result->close();
  15.       }
  16.     $mysqli->close();
  17.       ?>

No se que me está fallando exactamente, pero me tira este error:

Cita:
Fatal error: Call to a member function query() on a non-object in /home/u872502437/public_html/url/archivo.php on line 56
En la línea del error se encuentra esto:

Código PHP:
Ver original
  1. if($result = $mysqli->query($query)) {

Gracias de antemano. Un saludo
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 29/12/2015, 17:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Fatal error: Call to a member function query() on a non-object in

La función conectar() devuelve con return el objeto $mysqli, por ningún motivo existirá de manera global ni por arte de magia con sólo invocar la función.

Debes asignar el resultado de la llamada en alguna variable, y entonces usarla:
Código PHP:
Ver original
  1. $x = conectar();
  2. $x->query('SELECT ...');
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/12/2015, 17:24
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 8 meses
Puntos: 468
Respuesta: Fatal error: Call to a member function query() on a non-object in

Gracias @pateketrueke.

Pego como me ha quedado el código para futuros visitantes:

Código PHP:
Ver original
  1. require("funciones.php");
  2. $con = conectar();

Código PHP:
Ver original
  1. $query = "SELECT * FROM materiales";
  2.       if($result = $con->query($query)) {
  3.         while ($row = $result->fetch_array()) {
  4.  
  5.                   ?>
  6.           <article class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
  7.                   <h2 class="alert alert-info"><?php echo $row['titulo']; ?></h2>
  8.                   <p><?php echo $row['descripcion']; ?></p>
  9.                 <img src="<?php echo $row['imagen']; ?>" class="img-responsive">
  10.                 <p class="precio"><small>Precio:</small> <?php echo $row['precio']; ?> €</p>
  11.           </article>
  12.           <?php
  13.         }
  14.         $result->close();
  15.       }
  16.     $con->close();
  17.       ?>
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Etiquetas: call, fatal, function, html, mysql, query, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.