Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]

case 'save':
          $sale = new Sale();
          if(count($_SESSION['detalle'])>0){
            $sale->saveSale();
            $recordLastSale = $sale->getLastSale();
            $resultLastSale = $recordLastSale->fetch_object();
            $idsale = $resultLastSale->last;
            foreach ($_SESSION['detalle'] as $detail):
                $idproduct = $detail['idsale_detail'];
                $amount = $detail['amount'] ;
                $price = $detail['price'];
                $subtotal = $detail['subtotal'];
                if($sale->saveSaleDetail($idsale,$idproduct,$amount,$price,$subtotal)){
                  echo "success";
                }else{
                  echo "something when wrong";
                }
              endforeach;
              $_SESSION['detalle'] = array(); 
          }else{
              echo "something when wrong";
          }
       break;
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 (php,2) [Seleccionar]
            $recordLastSale = $sale->getLastSale();
            var_dump($recordLastSale);
            $resultLastSale = $recordLastSale->fetch_object();
            $idsale = $resultLastSale->last;
Título: Re: fatal error on boolean
Publicado por: xiruko en 19 Marzo 2016, 14:30 PM
Código (php) [Seleccionar]
$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 (sql) [Seleccionar]

function getLastSale(){
$sql = "SELECT LAST_INSERT_ID() AS last";
if($this->conexion->conexion->query($sql)){
return true;
}else{
return false;
}
$this->conexion->conectar();
}

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 (php) [Seleccionar]
if ($resultado = $mysqli->query($consulta)) {
  while ($obj = $resultado->fetch_object()) {
     printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
  }
}
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?