Foros del Web » Programando para Internet » PHP »

PHP y MYSQLI (POO)

Estas en el tema de PHP y MYSQLI (POO) en el foro de PHP en Foros del Web. Fatal error: Call to a member function fetch_row() on a non-object in E:\... on line 15 ¿Alguna explicación? Muchas gracias por adelantado. Código PHP: <?php ...
  #1 (permalink)  
Antiguo 02/04/2013, 12:34
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 11 años, 11 meses
Puntos: 1
PHP y MYSQLI (POO)

Fatal error:
Call to a member function fetch_row() on a non-object in E:\... on line 15

¿Alguna explicación? Muchas gracias por adelantado.

Código PHP:

<?php

echo 'Bienvenido a la lista de categorias de mi blog ';
echo 
' Conectando a la base de datos......';
$mysqli = new mysqli("localhost""root""""bd_blog");

if (
mysqli_connect_errno()) {
    echo(
"Fallo conexion " mysqli_connect_error());
} else {
    echo 
'Conexion establecida';
}

$query 'select * from bd_blog';
$resultado $mysqli->query($query);

// AQUI FALLA LINEA 15
$datos $resultado->fetch_row();

while (
$datos) {
    echo 
'Nombre ' $datos['nombre'] or mysqli_error();
}

$resultado->free();
$mysqli->close();

?>
  #2 (permalink)  
Antiguo 02/04/2013, 12:40
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: PHP y MYSQLI (POO)

puede deberse a que el sql tenga errores, depura la cadena SQL, usa bloques try catch para interceptar las excepciones
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 02/04/2013, 12:42
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: PHP y MYSQLI (POO)

Tu tabla se llama bd_blog? No tiene sentido donde colocaste el or mysqli_error(); deberia ir en:

Código PHP:
Ver original
  1. $resultado = $mysqli->query($query) or die(mysqli_error($mysqli));
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 02/04/2013, 20:04
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: PHP y MYSQLI (POO)

Perdón por el retraso, bueno la tabla estaba mal ( fallo técnico)

Ahora me da como resultado 1 ( pero bucle infinito).

El problema que en la linea 15 cuando autocompleto ( desde netbeans ) me dice el mensaje de no hay sugerencias y nose porque, el problema es ese y he hecho lo que pone en varios tutos y en un libro que me comprado y no entiendo porque.
  #5 (permalink)  
Antiguo 02/04/2013, 20:12
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: PHP y MYSQLI (POO)

el autocomplete no debería ser limitante para tu desarrollo, ahora a que quieres llegar??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 02/04/2013, 20:14
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: PHP y MYSQLI (POO)

Yo quiero mostrar todos los nombres de las categorías que tengo en la tabla ( categoría) para hacer una especie de menu.

En mysql normal lo hago sin problemas ( pero como me gusta trabajar orientado a objetos como en android, java, c#) lo quiero aprender, pero me esta dando muchos problemas.
  #7 (permalink)  
Antiguo 02/04/2013, 20:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: PHP y MYSQLI (POO)

Tu código debería ser algo así:

Código PHP:
Ver original
  1. echo 'Bienvenido a la lista de categorias de mi blog ';
  2. echo ' Conectando a la base de datos......';
  3.  
  4. @$mysqli = new mysqli("localhost", "root", "", "tu base de datos");
  5.  
  6.     echo("Fallo conexion " . mysqli_connect_error());exit;
  7. } else {
  8.     echo 'Conexion establecida';
  9. }
  10.  
  11. $query = 'select * from tabla'; //tu tabla
  12. $resultado = $mysqli->query($query) or die(mysqli_error($mysqli));
  13.  
  14. while($datos = $resultado->fetch_assoc()) {
  15.     echo 'Nombre: ' . $datos['nombre'] . '<br />';
  16. }
  17.  
  18. $resultado->free();
  19. $mysqli->close();

Aunque un poco "combinado" por procesos y orientado a objetos funciona xD
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 02/04/2013, 20:25
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: PHP y MYSQLI (POO)

si quieres trabajar orientado a objeto y conoces java, c, etc no debería de darte el mayor problema php, aunque la manera como lo estas llevando es mas estructurado que OOP, estas uniendo vista con lógica, solo estas trabajando un poco con el objeto que te da mysqli
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 02/04/2013, 20:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: PHP y MYSQLI (POO)

PDO es más orientado a objetos y mucho mejor:

Código PHP:
Ver original
  1. try {
  2.     $pdo = new PDO('mysql:host=localhost;dbname=basededatos', 'root', 'password');
  3.     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4.     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  5.    
  6.     $stmt = $pdo->prepare('SELECT * FROM tabla');
  7.     $stmt->execute();
  8.     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  9.    
  10.     foreach ($result as $dato) {
  11.         echo "{$dato['nombre']}<br />";
  12.     }
  13. } catch (PDOException $e) {
  14.     echo 'Error: ' . $e->getMessage(); //solo en desarrollo
  15. }

http://www.php.net/manual/es/book.pdo.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 02/04/2013, 20:29
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: PHP y MYSQLI (POO)

POR FIN !!! Ya me funciona, muchas gracias.
  #11 (permalink)  
Antiguo 28/05/2014, 03:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 14 años, 11 meses
Puntos: 0
De acuerdo Respuesta: PHP y MYSQLI (POO)

Cita:
Iniciado por andresdzphp Ver Mensaje
PDO es más orientado a objetos y mucho mejor:

Código PHP:
Ver original
  1. try {
  2.     $pdo = new PDO('mysql:host=localhost;dbname=basededatos', 'root', 'password');
  3.     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4.     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  5.    
  6.     $stmt = $pdo->prepare('SELECT * FROM tabla');
  7.     $stmt->execute();
  8.     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  9.    
  10.     foreach ($result as $dato) {
  11.         echo "{$dato['nombre']}<br />";
  12.     }
  13. } catch (PDOException $e) {
  14.     echo 'Error: ' . $e->getMessage(); //solo en desarrollo
  15. }

[url]http://www.php.net/manual/es/book.pdo.php[/url]
Yo tenia el mismo error y me funciono, gracias

Etiquetas: mysql, mysqli, select
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:59.