elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Fatal error: Call to a member function fetchArray() on boolean in
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fatal error: Call to a member function fetchArray() on boolean in  (Leído 168 veces)
herrwolf

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Fatal error: Call to a member function fetchArray() on boolean in
« en: 17 Mayo 2017, 21:09 »

Hola antes de empezar debo mencionar que apenas estoy comenzando con php y que agradezco de antemano cualquier ayuda u orientacion que me puedan dar.

Y bueno entrando ya en tema lo que estoy haciendo es un curso de php y en el estoy desarrollando como ejemplo una aplicacion que me permite guardar favoritos, y dentro de la aplicacion hay una script para crear usuarios nuevos el script trabaja bien pero ahora que estoy tratando de controlar un poco mas mi aplicacion estoy tratando de aplicar rangos de usuario.

estoy usando una base de datos sqlite3, la cuestion es que al modificar el codigo estoy haciendo un while y al ejecutarlo me marca un Fatal error: Call to a member function fetchArray() on boolean in C:\wamp\www\favoritosOnline\crearusuario.php on line 31

Este es el codigo que tengo escrito:
Código
  1. <?php
  2.  
  3. $contador = 0;
  4.  
  5. //Obtener variables
  6. $usuario = $_POST['usuario'];
  7. $contrasena = $_POST['contrasena'];
  8. $nombre = $_POST['nombre'];
  9. $apellido = $_POST['apellido'];
  10. $edad = $_POST['edad'];
  11.  
  12. // Crear Conexion
  13. //clase constructora de la base de datos
  14. class BaseDatos extends SQLite3{
  15.  function __construct(){
  16.    $this->open('favoritos.db');
  17.  }
  18. }
  19. //se crea la nueva instancia donde se carga la clase base de datos en la variable $db con una estructura de control if para checar si se crea la base de datos o da error
  20. $db = new BaseDatos();
  21. if (!$db) {
  22.  echo "<p>ERROR al abrir la base de datos favoritos</p>";
  23. }
  24.  
  25. $consulta = "SELECT * FROM usuarios";
  26.  
  27. //Ejecutar consulta
  28. $resultado=$db->exec($consulta);
  29.  
  30. while ($fila = $resultado->fetchArray(SQLITE3_ASSOC)) {
  31.  if($fila['usuario'] == $usuario){
  32.  
  33.  $contador++;
  34.  
  35.  }else{}
  36. }
  37.  
  38. if ($contador ==0) {
  39. //Consulta
  40. /*Privilegios de usuario
  41. 1=administrador
  42. 2=controlador
  43. 3=usuario registrado
  44. 4=usuario invitado
  45. */
  46. $consulta = <<<sql
  47. INSERT INTO usuarios VALUES('$usuario','$contrasena','$nombre','$apellido','$edad','3')
  48. sql;
  49.  
  50. //Ejecutar consulta
  51. $resultado=$db->exec($consulta);
  52.  
  53. //Y vuelvo
  54. echo '
  55. <html>
  56.  <head>
  57.    <meta http-equiv="REFRESH" content="0;url=index.php">
  58.  </head>
  59. </html>
  60. ';
  61. }else{echo "El nombre de usuario que has elegido ya existe. Elige otro";}
  62. //Cerrar dase de datos
  63. $db->close();
  64.  
  65. ?>

la verdad no se que es lo que tenga mal espero puedan ayudarme a resolver el problema.


« Última modificación: 18 Mayo 2017, 02:52 por herrwolf » En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 11.466



Ver Perfil
Re: Fatal error: Call to a member function fetchArray() on boolean in
« Respuesta #1 en: 17 Mayo 2017, 21:52 »

linea 31
Código
  1. while ($fila = $resultado->fetchArray(SQLITE3_ASSOC)) {

donde $resultado viene de linea 29
Código
  1. $resultado=$db->exec($consulta);

el manual dice
http://php.net/manual/es/sqlite3.exec.php

Citar
Valores devueltos

Devuelve TRUE si la consulta tuvo éxito, FALSE en caso de error.

y tu error dice
Citar
Fatal error: Call to a member function fetchArray() on boolean
Citar
Error fatal: Llamado a funcion  fetchArray() en un booleano

revisa la documentación a ver donde se ubica el resultado del exec, porque el no lo retorna


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
herrwolf

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Fatal error: Call to a member function fetchArray() on boolean in
« Respuesta #2 en: 18 Mayo 2017, 02:51 »

Ya lo he solucionado

Como comentas engel lex el exec no devuelve valores de true o false lo unic oque tuve que hacer es cambiar el exec por query

antes:
Código:
$resultado=$db->exec($consulta);

despues:
Código:
$resultado=$db->query($consulta);

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fatal error: Call to undefined function mysql_connect()????
Desarrollo Web
SERBice 2 2,429 Último mensaje 25 Noviembre 2004, 10:03
por cimi
Fatal error: Call to undefined function get_option()
PHP
yagami2k2 4 2,947 Último mensaje 2 Julio 2010, 18:25
por yagami2k2
fatal error: Call to undefined function: openssl_get_privatekey()
PHP
almita 4 6,863 Último mensaje 5 Abril 2011, 20:05
por ~ Yoya ~
Fatal error: Call to a member function prepare() on a non-object in
PHP
Makroll 3 3,056 Último mensaje 8 Noviembre 2013, 01:02
por #!drvy
call to a member function fetch_array() on boolean « 1 2 »
PHP
geshiro 10 1,087 Último mensaje 6 Abril 2016, 23:23
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines