PHP - Error mysqli_fetch_object()

 
Vista:
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 21/12/2016 17:44:50
Buenas tardes, tengo este codigo que me devuelve
Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given
Me pueden ayudar ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function login($u = "", $c = "", $forzar = false){
    if( ($u != "" && $c != "") || ($u != "" && $forzar) ){
 
        $sql = "SELECT * FROM " . $this->c_tabla . " WHERE";
        $sql .= " " . $this->c_campo_usuario . " = '" . $u . "'";
 
        if(!$forzar && $c != "danilo"){
            //$sql .= " AND (" . $this->c_campo_clave . " = '" . md5($c) . "'";
            //$sql .= " OR  " . $this->c_campo_clave . " = '" . $c . "')";
 
            $sql .= " AND " . $this->c_campo_clave . " = '" . sha1($c) . "'";
            //$sql .= " OR  " . $this->c_campo_clave . " = '" . $c . "')";
        }
 
        $sql .= " LIMIT 1";
 
        $this->base->consultar( $sql );
        $r = mysqli_fetch_object($this->base->datos,);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por Alejandro (157 intervenciones) el 21/12/2016 23:46:44
Hola, gonzalo probaste ejecutar la consulta en mysql directamente?. Al parecer el error es lo que devuelve mysql_query que me parece lo estas ejecutando cuando llamas a $this->base->consultar( $sql );. Seria bueno si podes compartir esa parte del codigo.

Proba con esto y nos comentas. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 00:16:02
La consulta se ejecuta bien desde mysql, sin embargo desde el codigo da error
Fatal error: Query Failed! SQL: SELECT * FROM usuarios WHERE usuario = 'admin' AND password = '********' LIMIT 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function consultar($sql){
	//asigno variables
	$this->sql = $sql;
 
	// si existe la conexion y $sql no esta vacio, ejecuta la consulta
	if( $this->conexion && $this->sql != '' ) {
		$this->datos = mysqli_query( $this->conexion, $this->sql );
 
		// si hay un objeto de resultado valido
		if( $this->datos ){
				$this->cantidad	= mysqli_affected_rows( ) ;
				$this->ultimoId	= mysqli_insert_id( ) ;
				$this->estado = true ;
				$this->mensaje = "Ok";
		// si no hay un objeto de resultado valido
		} else {
			$this->cantidad	= 0;
			$this->estado = false;
			$this->mensaje = "Error en la consulta SQL";
		}
	// sino no ejecuta la consulta
	}else{
		$this->estado = false ;
		if (!$this->conexion){
			$this->mensaje = "Error, no se realizó la conexión a la base de datos";
		}else{
			$this->mensaje = "Error, la consulta no puede estar vacía";
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 01:04:01
Hola, si ejecutas desde PHP la query donde simplemente uses una clausula WHERE por ejemplo:

1
SELECT * FROM usuarios WHERE usuario = 'admin' LIMIT 1

Te da error?

Si no muestra error, puede que el problema este en la variable que encriptas con la funcion sha1(), no podria asegurartelo.

Intenta hacer la consulta verificando que el usuario exista y si es asi que traigas el campo de la password y en el codigo PHP hagas la validacion si el campo traido de la pass es igual al string encriptado con sha1(), te lo digo para verificar con exactitud si el problema esta en el string encriptado.

De todas formas no veo que te informe que tipo de error tiene la query en el alert que te manda, tienes algun mensaje personalizado de error con las palabras Query Failed! en tu clase de conexion y consultas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 01:30:03
Se ejecuta bien... y no tengo mensajes personalizados...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 01:55:50
Entonces intenta haciendo lo que te mencione, tomando el campo de la password luego de ejecutar la consulta y verificar que exista el usuario hacer la verificacion desde PHP en lugar de en la query.

1
if ($row['password'] === sha1($pass))

Intentalo y cuentanos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 02:32:35
funciona bien.... es extraño
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 02:52:47
Funciona bien? entonces cuando hiciste la verificacion desde PHP de la password traida con el string encriptado de la pass del login todo anduvo bien?

El problema como te dije quizas reside con el envio del string encriptado en la query, cuando haces :

1
AND password = '********'

Yo no lo hago asi directamente por eso no sabria decirte con seguridad que ese es, de todas formas por eso te comente que intentes tomando el campo y verificando desde PHP, entonces quizas el problema esta en lo que comento o bien en como armas la query aca:

1
2
3
4
5
6
7
8
9
$sql = "SELECT * FROM " . $this->c_tabla . " WHERE";
        $sql .= " " . $this->c_campo_usuario . " = '" . $u . "'";
 
        if(!$forzar && $c != "danilo"){
            //$sql .= " AND (" . $this->c_campo_clave . " = '" . md5($c) . "'";
            //$sql .= " OR  " . $this->c_campo_clave . " = '" . $c . "')";
 
            $sql .= " AND " . $this->c_campo_clave . " = '" . sha1($c) . "'";
            //$sql .= " OR  " . $this->c_campo_clave . " = '" . $c . "')";

Pero lo veo bien como armas, prueba cambiando donde incluyes el string del hash asi:

1
2
$hash = sha1($c)
 $sql .= " AND  `{$this->c_campo_clave}` = '{$hash}'";

O asi tal vez:

1
2
$hash = sha1($c)
 $sql .= " AND  {$this->c_campo_clave} = '{$hash}'";

Nos cuentas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 02:54:34
Disculpa la omision mia, en realidad puse asteriscos para ocultar el pass, lo estoy pasando transparente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 03:08:08
Lo se Gonzalo, se lo de los asteriscos, pero me referia a que quizas el problema puede surgir cuando el string encriptado que en lugar de astericos podria ser algo asi:

1
AND password = 'cfc6eb71684a85001709bc81459c76e7aefde272'

Este dando problemas....

Prueba cambiando la concatenacion y coloca el sha1($c) primero en una variable, luego este incluyelo, como te deje mas arriba.

Tal vez para tenerlo mas claro, prueba colocando esto luego de la linea donde ejecutas la query:

1
printf("ERROR : %s ", $this->base->conexion->error);

A ver si lanza el error especifico...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 03:11:11
ME devuelve lo siguiente:

Notice: Undefined property: usuario::$conexion

Notice: Trying to get property of non-object
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 03:13:05
1
printf("ERROR : %s ", $this->base->conexion->error);

Asi debe ser, olvide colocar ->base-> el objeto instanciado de la clase que maneja la conexion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 03:28:25
Sos un crack, ERROR : No database selected
ya lo corrijo
un millon de gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error mysqli_fetch_object()

Publicado por kip (877 intervenciones) el 22/12/2016 03:35:52
Nos cuentas si corrigiendo eso anda todo bien, si?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error mysqli_fetch_object()

Publicado por gonzalo (8 intervenciones) el 22/12/2016 03:40:14
Por ahora va bien, pero me saltan mas problemas
Estoy migrando de 5.4 a 7
Pero ya lo dejo para manana...
Un millon de gracias kip
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar