PHP - función php mysqli, error property si no hay datos

   
Vista:

función php mysqli, error property si no hay datos

Publicado por Arenas (3 intervenciones) el 15/12/2017 17:06:58
El problema es que estoy algo perdido desde que cambie a mysqli, y aunque estoy funcionando bien oculto error php que no se soluionar.

El error solo lo da cuado no existe el mail en mi tabla:
Error "Trying to get property of non-object"

Ejemplo funcion
1
2
3
4
5
6
7
8
9
10
function obtener_nombre_email($mail) {
	$db = new Conexion();
	$sql = 'select nombre FROM usuarios WHERE mail="'.$mail.'" limit 1';
	$result = $db->query($sql);
	$row=$result->fetch_object();
	$resultado=$row->campo; //ojo, va el nombre
	return $resultado;
	$result->free();
 
}

Cuando llamo a la función todo va bien, solo falla si el mail a buscar no esta guradado en la base de datos, cosa que pasa en repetidas ocasiones. Me costo mucho llegar a esta adaptación de la función y cuando ya parecía tenía una manera lógica, nuevo fallo, y este me supera.

Espero podáis soltar algún error en la función, estoy algo desesperado.
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

función php mysqli, error property si no hay datos

Publicado por Juan (36 intervenciones) el 15/12/2017 17:26:35
Buenas Arenas

Por lo que dices es un problema de retorno. Deberías comprobar que el fetch_object() trae datos, es decir, probablemente deberías comprobar si tu variable $result, quizás sería bueno que usarás un while, más o menos como nos muestra en la documentación que puedes seguir en esta url: http://php.net/manual/es/mysqli-result.fetch-object.php

Y claro lo ideal sería que $resultado fuera un array o algo similar.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

función php mysqli, error property si no hay datos

Publicado por Arenas (3 intervenciones) el 15/12/2017 17:35:40
Perfecto Juan,

La solución más sencilla, he probado con una función tipo para coger cualquier valor y va sin error tal y como me comentas.
Mil gracias.

Pongo resultao por si resulta útil a otros, esta la uso muy regularmente, se me hace raro el whil para un resultado, pero si mato el error, bienvenido sea.....

1
2
3
4
5
6
7
8
9
10
11
12
function obtener_campo_tabla($campo,$tabla,$idcampo,$valorcampo) {
			$db = new Conexion();
			$sql = 'select '.$campo.' as campo FROM '.$tabla.' WHERE '.$idcampo.'="'.$valorcampo.'" limit 1';
			//print $sql;
			$result = $db->query($sql);
			while ($row = $result->fetch_assoc()) {
			$resultado=$row->campo; //ojo, va el nombre
			return $resultado;
		}
			$result->free();
 
			}
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