Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: geshiro en 19 Marzo 2016, 03:43 am



Título: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 03:43 am
Fatal error: Call to a member function fetch_object() on boolean in C:\xampp\htdocs\store\controllers\sales.php on line 35


Código
  1. case 'save':
  2.          $sale = new Sale();
  3.          if(count($_SESSION['detalle'])>0){
  4.            $sale->saveSale();
  5.            $recordLastSale = $sale->getLastSale();
  6.            $resultLastSale = $recordLastSale->fetch_object();
  7.            $idsale = $resultLastSale->last;
  8.            foreach ($_SESSION['detalle'] as $detail):
  9.                $idproduct = $detail['idsale_detail'];
  10.                $amount = $detail['amount'] ;
  11.                $price = $detail['price'];
  12.                $subtotal = $detail['subtotal'];
  13.                if($sale->saveSaleDetail($idsale,$idproduct,$amount,$price,$subtotal)){
  14.                  echo "success";
  15.                }else{
  16.                  echo "something when wrong";
  17.                }
  18.              endforeach;
  19.              $_SESSION['detalle'] = array();  
  20.          }else{
  21.              echo "something when wrong";
  22.          }
  23.       break;
  24.  


Título: Re: fatal error on boolean
Publicado por: Shell Root en 19 Marzo 2016, 12:10 pm
Agrega un var_dump antes de que se lance el error, es decir:
Código
  1.            $recordLastSale = $sale->getLastSale();
  2.            var_dump($recordLastSale);
  3.            $resultLastSale = $recordLastSale->fetch_object();
  4.            $idsale = $resultLastSale->last;


Título: Re: fatal error on boolean
Publicado por: xiruko en 19 Marzo 2016, 14:30 pm
Código
  1. $recordLastSale = $sale->getLastSale();

Esto te está devolviendo un boolean en lugar de un mysqli_result. Revisa esa función para ver por qué falla.

Saludos!


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 17:56 pm
me lanza ahora esto

bool(true)
Fatal error: Call to a member function fetch_object() on boolean in C:\xampp\htdocs\store\controllers\sales.php on line 36

si le pongo var_dump();


Título: Re: fatal error on boolean
Publicado por: Shell Root en 19 Marzo 2016, 18:26 pm
Eso quiere decir que esta enviando un valor booleando de estado TRUE, cuando deberia de recibir un objeto!
Ingresa a la función getLastSale(); y verifica que return.


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 18:41 pm
esta e n mi funcion getLastSale
Código
  1. FUNCTION getLastSale(){
  2. $sql = "SELECT LAST_INSERT_ID() AS last";
  3. IF($this->conexion->conexion->query($sql)){
  4. RETURN TRUE;
  5. }ELSE{
  6. RETURN FALSE;
  7. }
  8. $this->conexion->conectar();
  9. }
  10.  
  11.  


Título: Re: fatal error on boolean
Publicado por: Shell Root en 19 Marzo 2016, 19:24 pm
Ahi lo tienes, estas devolviendo un booleano, debería de devolver es el valor de la query.


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 19:39 pm
me sale esto ahora
Fatal error: Call to a member function fetch_object() on string in C:\xampp\htdocs\store\controllers\sales.php on line 35


Título: Re: fatal error on boolean
Publicado por: Shell Root en 19 Marzo 2016, 19:45 pm
Sabes la diferencia entre un booleano, string, objeto, etc?


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 19:48 pm
si , bool = 0,1 , string = caracteres y asi


Título: Re: fatal error on boolean
Publicado por: Shell Root en 19 Marzo 2016, 19:53 pm
Listo, entonces para que haces un fetch_object() si ya tienes el string del retorno de la función getLastSale();

Por ejemplo,
En la primera linea del siguiente código estoy realizando la ejecución de la query.
En la segunda estoy recorriendo el objecto $resultado; que es el resultado de la ejecución de la query. (Si haces un var_dump() podrás ver lo que contiene la variable $resultado)
Ahora el objeto $obj contiene la información de la query y se manimula como un objeto $obj->Name y $obj->CountryCode
Código
  1. if ($resultado = $mysqli->query($consulta)) {
  2.   while ($obj = $resultado->fetch_object()) {
  3.      printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
  4.   }
  5. }


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 20:00 pm
me ayudas con el error para que ya me lo de ya pueda mandarlo lo que hace las funciones de base de datos?


Título: Re: fatal error on boolean
Publicado por: geshiro en 19 Marzo 2016, 20:01 pm
en mi caso como seria entonces?