Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: venadHD en 18 Julio 2015, 01:20 am



Título: [Solucionado] num_rows me da error
Publicado por: venadHD en 18 Julio 2015, 01:20 am
Código
  1. //Datos de testeo
  2. $b_data = $_SERVER['SERVER_NAME'];
  3. $dbConnect->query("insert into global values('$b_data', 'thisInIntroducced')");
  4. $query = $dbConnect->query("select * from global");
  5. $result = $query->result['num_rows'];

Me dice un error, este error:
Código:
Notice: Undefined property: mysqli_result::$result in F:\localhost\htdocs\index.php on line 12

Soy nuevo en PHP :( y ando testeando algunas cosas que ando viendo por la php.net


Título: Re: [Ayuda] Por qué me da error y como se usa esto?
Publicado por: ivancea96 en 18 Julio 2015, 01:42 am
El método query retorna un result: http://php.net/manual/es/class.mysqli-result.php (http://php.net/manual/es/class.mysqli-result.php)


Título: Re: [Ayuda] Por qué me da error y como se usa esto?
Publicado por: venadHD en 18 Julio 2015, 02:04 am
El método query retorna un result: http://php.net/manual/es/class.mysqli-result.php (http://php.net/manual/es/class.mysqli-result.php)
Si Si, eso ya lo tenia, pero me da un error de Undefined property
La linea 12 (que es la que menciona el error es la siguiente)

Undefined property: mysqli_result::$result in F:\localhost\htdocs\index.php on line 12
Código
  1. $result = $query->result['num_rows'];

Código
  1. <?php
  2. $dbConnect = new mysqli("localhost", "root", "", "global");
  3. //Datos de testeo
  4. $b_data = $_SERVER['SERVER_NAME'];
  5. $dbConnect->query("insert into global(name, value) values('$b_data', 'thisInIntroducced')");
  6. $query = $dbConnect->query("select * from global");
  7. $result = $query->result['num_rows']; //Linea del error
  8. print($result);
  9. print("CLIENTE: ".$b_data);
  10. //Chequeando conexion
  11. if ($dbConnect->connect_errno) {
  12. if ($dbConnect->connect_error) {
  13. print("ERROR DE CONEXION DE MYSQL: ".$dbConnect->connect_error);
  14. die();
  15. }
  16. print("ERROR DE CONEXION DE MYSQL N: ".$dbConnect->connect_errno);
  17. die();
  18. }
  19. $dbConnect->close();
  20. print("<p>Conexion establecida correctamente</p>");
  21. ?>

adicional: Lo que pretendo hacer es saber cuantas filas tiene la base de datos, imagino que es esa la funcion que necesito


Título: Re: [Ayuda] Por qué me da error y como se usa esto?
Publicado por: DarK_FirefoX en 18 Julio 2015, 02:15 am
Para saber el numero de filas que te devolvió la query utilizando la extensión mysqli tienes dos formas, una por procedimientos, utilizando el método

Código
  1. mysqli_num_rows(mysqli_result $result)

Que lo que recibe el resultado de la query

O el estilo orientado objetos:

Código
  1. $mysqli_result->num_rows;

Por ejemplo, si el resultado de la query esta en la variable $result:

Estilo objetos:

Código
  1. $row_count = $result->num_rows;

Estilo procedimientos:

Código
  1. $row_count = mysqli_num_rows($result);

Salu2s


Título: Re: [Ayuda] Por qué me da error y como se usa esto?
Publicado por: venadHD en 18 Julio 2015, 12:18 pm
Para saber el numero de filas que te devolvió la query utilizando la extensión mysqli tienes dos formas, una por procedimientos, utilizando el método

Código
  1. mysqli_num_rows(mysqli_result $result)

Que lo que recibe el resultado de la query

O el estilo orientado objetos:

Código
  1. $mysqli_result->num_rows;

Por ejemplo, si el resultado de la query esta en la variable $result:

Estilo objetos:

Código
  1. $row_count = $result->num_rows;

Estilo procedimientos:

Código
  1. $row_count = mysqli_num_rows($result);

Salu2s

Hmm, se ve que el problema es que estoy dandole un valor nil, es decir, probe ambas formas de lo que me mencionaste, pero devuelve nul, Por otra parte, remodifique el codigo para ver si es el result era la query y usé el codigo que tu me dijiste, y funcionó

Codigo antiguo
Código
  1. //getter de filas
  2. $query = $dbConnect->query("select * from global");
  3. $result = $query->result;
  4. //$num_rows = $result->num_rows;
  5. $num_rows = mysqli_num_rows($result);

Codigo nuevo
Código
  1. //getter de filas
  2. $query = $dbConnect->query("select * from global");
  3. //$result = $query->result;
  4. //$num_rows = $result->num_rows;
  5. $num_rows = $query->num_rows;
  6. print("Numero de filas: $num_rows <br>");

EDIT

Volvió el problema al cambiarlo a formato tabla, anda ya!! D: Si es el mismo codigo, por que falla ahora?

Código
  1. <?php
  2. //Conexion a base de datos
  3. $db = array();
  4. $db['usuario'] = "root"; $db['contra'] = ""; $db['dbnombre'] = 'global'; $db['host'] = 'localhost';
  5. $dbConnect = new mysqli($db['host'], $db['usuario'], $db['contra'], $db['dbnombre']);
  6. //Chequeo de conexion a base de datos
  7. if ($dbConnect->connect_errno) {
  8. if ($dbConnect->connect_error) {
  9. print("ERROR DE CONEXION DE MYSQL: ".$dbConnect->connect_error);
  10. die();
  11. }
  12. print("ERROR DE CONEXION DE MYSQL N: ".$dbConnect->connect_errno);
  13. die();
  14. }
  15. //Numero de filas en la base de datos
  16. $query = $dbConnect->query("select * from {$db['dbnombre']}");
  17. $numero_filas = $query->num_rows;
  18. ?>

EDIT DE NUEVO:

Era error de la base de datos, ya esta todo bien XD