Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/10/2015, 16:53
Avatar de SCY-FOX
SCY-FOX
 
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 17 años, 3 meses
Puntos: 5
Respuesta: Cómo recuperar y enviar el objeto que trae la respuesta de MySQLi

Cita:
Iniciado por mortiprogramador Ver Mensaje

Saludo
¡Ya po!

Pues revisando el tema del modo en que realizaste la consulta
con el bind_result definitivamente es un lío a la hora de
manejar la respuesta.

Pues se me ocurren estas opciones:

1. Realizar un explode.

Código PHP:
if ($valor[] = $FS->validarUsuario($username$password) ) 
$valor explode('|',$valor[0][0]); 

Y de ahí en adelante, ya se maneja con las variables que ya están ($valor[0], etc...)

Esto, pensandolo a futuro para consultas que traigan varios registros
se podría manejar en un solo ciclo
Ej
Código PHP:
if ($valor[] = $FS->validarUsuario($username$password) ) 
//vamos a suponer que vienen 2 valores
for($i 0$i sizeof($valor[0]); $i++)
{
$valor explode('|',$valor[0][$i]);
  foreach (
$valor as $val) {
     echo 
$val;
  }     



2. Cambiar el retorno para que devuelva un array, y aunque el explode
se evitaría, vendría la terapía de recorrer no uno, ni dos, sino 3 arreglos.

3. Cambiar el modo de obtener los datos, usar el query de mysqli,
y con eso sì se obtiene un fetch_array (1 registro) o un fetch_all (varios)
en cuyo caso se recorrería uno o máximo dos arreglos.

4. Hacer uso de adodb (para tu proyecto creo que vendrìa de perlas),
pues es liviano, fàcil de usar, y tiene el tema de bind params implementado
Ej
Código PHP:
$query "SELECT nombre, apellido, tipousuario  FROM m_usuarios WHERE username = ? AND password = ?";
$rs $DB->GetAll($query,array($username$password)); 

Pero al igual que el punto anterior, viene a dar uno o dos arreglos.

5. Hacer uso de un framework (Hay varias ofertas) que tienen tambièn ya
lo de bind params, y obtienen mejor los datos.
Código PHP:
$post['Post']['id']
// o 
$post->id 
En ambos casos usandolos directo cuando son solo 1 registro,
y en un foreach cuando son varios.

Así que ahora, como dijo el arquitecto, y su interlocutor antes que él:
'El tema es de elección'
Muuchas gracias por todos los tips.

Por otro lado, encontré este tutorial , http://code.tutsplus.com/tutorials/t...nts--net-13661 que habla sobre el problema de recuperar columnas en donde no sabemos la cantidad de columnas que se recibirán, además del manejo de los datos recibidos por la consulta en si.

Utiliza una función que no conocía para nada y que voy a probar con mi intento de CMS para ver si funciona. Si queda y anda bien, publicaré acá el código para que otra persona pueda usarlo o solucionar el problema.

Sobre usar un framework aparte, al menos para este proyecto, creo que sería muy overkill considerando que solo debo hacer un administrador de fotos y eventos. (y que tengo poco tiempo para hacerlo) por lo que a futuro si me preocuparé de buscar alguno que me sirva :)

Gracias nuevamente!!